我是一名正在學習Lua的JavaScript開發人員。我在Lua語言中遇到了一個函數的問題。獲取函數的功能
在JavaScript中,它很簡單:
function test (a, b) {}
console.log(test.length) // 2
怎麼可能做這樣很容易在Lua?
function test (a, b) end
print(#test) -- gives an error..
我是一名正在學習Lua的JavaScript開發人員。我在Lua語言中遇到了一個函數的問題。獲取函數的功能
在JavaScript中,它很簡單:
function test (a, b) {}
console.log(test.length) // 2
怎麼可能做這樣很容易在Lua?
function test (a, b) end
print(#test) -- gives an error..
這是隻能通過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-esque的感覺。但請注意,這可能只適用於Lua 5.2及更高版本。
爲了避免XY問題,您還可以提供一些您正在嘗試解決的問題的背景嗎? – greatwolf