在LUA中将函数名称作为参数传递

时间:2014-06-25 14:48:43

标签: function button lua widget

所以我有一个按钮类,我在其中创建我的按钮:

self.button = widget.newButton {..., onEvent = handleEvent)

我想在我的主要部门打电话给那个按钮课程,所以我正在做:

local button = Button:new(..., handle)

事情是我的所有事件处理程序都位于我的按钮类中。 如何从类外部传递事件处理程序的名称?

我不能把它作为句柄传递给"处理" ... 我想我必须将它作为函数传递,但我该怎么办呢?

1 个答案:

答案 0 :(得分:1)

Lua中的职能是一流的公民,可以像任何其他价值观一样对待;它们可以分配给变量或作为函数参数传递。

local function cb() ... end
local button = Button:new(..., cb)

或者没有局部变量。

local button = Button:new(..., function() ... end)

如果要在按钮类上调用方法,也可以使用闭包来执行此操作:

self.button = widget.newButton {..., onEvent = function() return self:onPressed() end)