有点困惑这一切;所以这就是我想要做的! 因此有一个def:
block_basic_DEF =
{
image = "button.png",
name = "basic block",
obj_table = this_obj_table.common_objects_table,
startup = function() init(), <----- This is the problem
}
在另一个文件中,我按照以下方式访问:
function spawn(params)
local obj = display.newImage(params.image)
-- etc.
在那个block_basic_DEF
我希望传递init()
函数的地址,这样在我的spawn中我可以做类似的事情:
params.startup()
- 即。实际上调用原始的init函数
答案 0 :(得分:21)
Lua函数只是值,你可以使用他们的名字来设置它们而不用parens:
function init()
print("init");
end
block = {
startup = init
}
然后将其称为普通函数
block.startup()
它接近OOP,但实际上它就像函数是正常值一样简单。
如果你想要一个更像lambda的东西,你必须拼出整个函数,省略名称:
startup = function() print("init") end
答案 1 :(得分:6)
您忘记了end
关键字。它是函数定义的一部分,您不能将其遗漏。你不会忽略C中的结束}
吗?
block_basic_DEF =
{
image = "button.png",
name = "basic block",
obj_table = this_obj_table.common_objects_table,
startup = function() init() end, -- <-- This was the problem
}
除此之外,以下两种语法变体相同:
function foo()
end
foo = function()
end