获取函数的arity
Get arity of a function
我是一名正在学习Lua的JavaScript开发人员。我遇到了一个在Lua语言中获取函数arity的问题。
在JavaScript中,它很简单:
function test (a, b) {}
console.log(test.length) // 2
在卢阿怎么可能这么容易做到这一点?
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风格的感觉。然而,请注意,这可能只适用于Lua 5.2及以上版本。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- JQuery合并了keyup和focusout两个函数
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 我可以在json对象中添加一个函数吗
- AngularJS:我可以跳过函数参数回调吗
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- jquery点击函数select&取消选择
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- Node.js v6.2.0类扩展不是函数错误
- 获取函数的arity
- 有没有一种方法可以获得javascript函数所采用的参数的arity
- 为什么一个节目“;函数getFullYear(){[Date.getFullYear的本地代码,arity=0]}”;而