【发布时间】:2014-01-07 04:46:09
【问题描述】:
我仍在使用 lua 模块,我发现以下“有趣”的问题取决于您如何在模块中创建方法/函数。 请注意名为 test_suite.lua 的文件中的以下代码:
local mtests = {} -- public interface
function mtests:create_widget(arg1)
print(arg1)
-- does something
assert(condition)
print("TEST PASSED")
end
return mtests
使用上面的代码,无论我在调用 create_widget() 时传入什么,arg1 始终为 nil。但是,如果我将函数的定义更改为如下所示:
function mtests.create_widget(arg1) -- notice the period instead of colon
print(arg1)
-- does something
assert(condition)
print("TEST PASSED")
end
然后,系统正确显示 arg1。
这就是我调用方法的方式:
execute_test.lua
local x = require "test_suite"
x.create_widget(widgetname)
你能告诉我有什么区别吗?我一直在阅读:http://lua-users.org/wiki/ModuleDefinition
但我没有遇到任何可以向我解释这一点的东西。 谢谢。
【问题讨论】:
-
你是怎么调用函数的?
-
ECrownofFire - 我已经修改了我的帖子以包含我如何调用该方法的示例。