为什么我们需要“回调函数”?
我正在读书programming in Lua。它说 在许多情况下,封闭提供了一种有价值的工具。如我们所见,它们可用作排序等高阶函数的参数。闭包对于构建其他功能的功能也很有价值,例如我们的newCounter示例;这种机制允许Lua程序结合功能世界中的复杂编程技术。闭包对于回调函数也很有用。当您在传统的GUI工具箱中创建按钮时,就会出现一个典型的示例。每个按钮都有一个回调函数,当用户按下该按钮时会被调用。您希望不同的按钮在按下时会做一些略有不同的事情。例如,一个数字计算器需要十个类似的按钮,每个数字一个。您可以使用以下功能创建每个: function digitButton (digit) return Button{label = tostring(digit), action = function () add_to_display(digit) end} end 看来,如果调用digitButton,它将返回action(将创建一个闭包),因此,我可以访问digit传递给digitButton。 我的问题是: Why we need call back functions? what situations can I apply this to? 作者说: 在此示例中,我们假定Button是创建新按钮的工具包函数。label是按钮标签;而action是按下按钮时要调用的回调闭包。在digitButton完成其任务之后以及在局部变量digit超出作用域之后,可以很长一段时间调用该回调,但是仍然可以访问此变量。 根据作者,我认为类似的例子是这样的: function Button(t) -- maybe you should set the button here return t.action -- so …