我正在学习Lua并遇到以下构造: button.action = function() buttonPressed() end 它是一样的吗? button.action = buttonPressed() end ? 我知道button.action被赋予了buttonPressed()返回的值,但是为什么要将它包装
button.action = function() buttonPressed() end
它是一样的吗?
button.action = buttonPressed() end
?
我知道button.action被赋予了buttonPressed()返回的值,但是为什么要将它包装成这样的匿名函数呢?
“我知道button.action被赋予了buttonPressed()返回的值,但是为什么要将它包装成这样的匿名函数呢?”你理解错了.该声明:
button.action = function() buttonPressed() end
将button.action分配给一个匿名函数,该函数在被调用时将依次执行调用buttonPressed().请注意,匿名函数不返回任何内容,因此仅为其副作用调用它.这是回调的常见习语.您使用匿名函数来延迟执行某些代码(在这种情况下,只调用buttonPressed),直到您需要执行它为止.
鉴于你的代码片段的名称,我猜这个代码设置了按下某个按钮时要执行的操作.当按下按钮时,动作被触发(代码内部的某处会有一个调用,如button.action()调用存储在button.action中的匿名函数)并执行调用buttonPressed().