Lua 中是否可以覆盖库中的函数?

Max*_*ell 2 lua overriding function local

我正在尝试对函数进行本地重写,以便我可以丢弃返回的第一个值,并且函数将仅返回一个值(通常作为第二个值返回)。

local r.functionName()
    discardVar,keepVar = r.functionName()
    return keepVar
end
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此脚本时,我看到一个错误:

'(' expected near '.'

我不知道如何进行这项工作。我只写过没有“.”的函数。在函数名称中。我不确定它是否是正确的术语,但我想,在这种情况下,“r”将是包含我想要本地覆盖的函数的库(或者可能是“环境”?)。

基本上,期望的结果是该函数仅返回一个值而不是两个;仅通常返回的值作为其第二个返回值。

我最接近成功的是合法的堆栈溢出,所以这似乎是询问它的正确位置。:)

r.functionName()
    discardVar,keepVar = r.functionName()
    return keepVar
end
Run Code Online (Sandbox Code Playgroud)

shi*_*ngo 5

首先保存函数

local f = r.functionName
Run Code Online (Sandbox Code Playgroud)

然后将其替换为您的实现

r.functionName = function()
    local discardVar,keepVar = f()
    return keepVar
end
Run Code Online (Sandbox Code Playgroud)

请注意,这也将替换库中的函数r,因此如果库本身内部依赖于该函数名称,则可能会失败。