我是一名正在学习Lua的JavaScript开发人员。我遇到了用Lua语言获取函数的问题。
在JavaScript中,它很简单:
function test (a, b) {}
console.log(test.length) // 2
如何在Lua中轻松完成这项工作?
function test (a, b) end
print(#test) -- gives an error..
答案 0 :(得分:7)
这只能通过debug
库实现,但有可能。
print(debug.getinfo(test, 'u').nparams) -- number of args
print(debug.getinfo(test, 'u').isvararg) -- can take variable number of args?
修改:以防你想玩一些黑魔法......
debug.setmetatable(function() end, {
__len = function(self)
-- TODO: handle isvararg in some way
return debug.getinfo(self, 'u').nparams
end
})
这样就可以在函数上使用#
长度运算符,并提供JavaScript风格。但请注意,这可能仅适用于Lua 5.2及更高版本。