如何在Lua中给闭包传递参数

我有以下代码:

{

    identifier = "hand:" .. card.name,
    area = { x, y, 100, 100 },
    on_click = function()
        -- 代码在这里
    end

}

我想使用 card 变量和指向此代码所放置的对象的引用来修改类的变量,其值为 card 变量。

那么,我如何从本地上下文中向将在其他代码片段中调用的函数传递参数?

我希望在事件管理循环中启动 on_click 函数。

点赞
用户1208078
用户1208078

将下面翻译成中文并且保留原本的 markdown 格式,保存当您将函数指定为此格式:

{
    identifier =“hand:”..卡牌名称,
    区域= {x,y,100,100},
    on_click =函数()
        本地a_card =卡片
        打印(a_card.name)
    结束
}
2012-09-05 14:26:31
用户1442917
用户1442917

如果我理解问题正确,您想要在 on_click 处理程序中引用 on_click 处理程序所属的对象。为此,您需要拆分您拥有的语句:

local card = { name = "my card" }
local object = {
  identifier = "hand:" .. card.name,
  area = { x, y, 100, 100 },
}
object.on_click = function()
  -- 代码在这里
  -- 您可以在此处引用 card 和 object(它们在此上下文中是上值)
  print(card.name, object.area[3])
end
object.click()

您还可以稍微不同地定义 on_click; 在这种情况下,您将 object 作为隐式声明的 self 变量(请注意,您也以稍微不同的方式调用它):

function object:on_click()
  -- 代码在这里
  -- 您可以在此处引用 card 和 object
  print(card.name, self.area[3])
end
object:click() -- 这与 object.click(object) 相同
2012-09-05 15:33:27