- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 Lua 动态调用带参数的函数。我想发送一个字符串以这样的方式进行解析:
“模块”是一个类似{ string=<instance of a class> }
的表格
split() 是一个简单的解析器,它返回一个带有索引字符串的表。
function Dynamic(msg)
local args = split(msg, " ")
module = args[1]
table.remove(args, 1)
if module then
module = modules[module]
command = args[1]
table.remove(args, 1)
if command then
if not args then
module[command]()
else
module[command](unpack(args)) -- Reference 1
end
else
-- Function doesnt exist
end
else
-- Module doesnt exist
end
end
当我通过“引用文献 1”尝试使用“ignore remove bob”时,它尝试在模块中与“ignore”关联的实例上调用“remove”,并给出包含在表中的参数“bob” (具有单个值)。
然而,在调用的另一端,remove 函数没有接收到参数。我什至尝试用
替换“引用 1”行module[command]("bob")
但我得到了相同的结果。
这是另一个函数,它不接收参数 "bob"
:
function TIF_Ignore:remove(name)
print(name) -- Reference 2
TIF_Ignore:rawremove(name)
TIF_Ignore:rawremovetmp(name)
print(title.. name.. " is not being ignored.")
end
当我试图找出问题所在时,我在我的代码中添加了“引用 2”。当我执行“ignore remove bob”时,或者当我将“Reference 1”中的“unpack(args)”替换为“bob”时,“remove”中的变量“name”仍然为 nil。
最佳答案
声明 function TIF_Ignore:remove(name)
等同于 function TIF_Ignore.remove(self, name)
。注意在第一种情况下使用冒号,它添加了额外的隐藏参数来模拟 OOP 和类。调用该函数的方式是将“bob”作为 self
参数而不是 name
传递。
要解决此问题,您可以像这样制作remove
“静态函数”:function TIF_Ignore.remove(name)
。但是,您还必须以类似的方式更改 rawremove
和 rawremovetmp
,包括声明和调用站点。另一个(更简单的)选项是不从 args
表中删除 module
,它应该是传递的第一个参数。
关于路亚: Dynamically calling a function with arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441321/
在 Lua 中寻找替换以下命令的解决方案: grep "dhcp-range" /tmp/etc/dnsmasq.conf | awk -F "\"*,\"*" '{print $2}' 试过了 fo
我在 Redis 环境中执行了以下 Lua 脚本: local result = {} local comment_ids = redis.call('smembers', 'comm
我想获取一个网页并以字符串形式获取结果,但我不知道该怎么做。我在网上搜索并没有找到如何做。 最佳答案 我会简单地使用 Lua Socket它带有 http submodule .您可以简单地使用 ht
我尝试使用 Lua 动态调用带参数的函数。我想发送一个字符串以这样的方式进行解析: 第一个参数是类实例“Handle” 第二个是要调用的函数 剩下的就是争论 “模块”是一个类似{ string= }
我在任何地方都找不到它的文档:/ (问题是标题) 找到 this但无法让它工作。 function onCollision( event ) --code-- end Runtime:addEv
我尝试高效地制作 lua 表的副本。我编写了以下运行良好的函数 copyTable()(见下文)。但我想我可以使用函数的“按值传递”机制获得更高效的东西。我做了一些测试来探索这个机制: functio
我正在尝试使用 Lua 注册一个 vector 类型,但是当我从 Lua 调用加法元函数时,我遇到了一个奇怪的“尝试索引一个新值”错误。 这里是涉及到的代码部分。我没有包含任何其他元函数(它们有同样的
我正在使用 lua 脚本获取 ZINTERSTORE 结果。我想要的是能够在调用中为 lua 提供动态数量的 zsets,以便: redis.pcall('ZINTERSTORE', result,
我想在 Lua 中声明由 C++ 应用程序注册的全局元表。 我定义了元表和一些字段的 __index 元方法,但是当 lua 脚本访问已知字段时,总是在我的 C++ 应用程序中调用 __index。
我是一名优秀的程序员,十分优秀!