理解 LUA 回调函数

例如,这段代码:

-- 定义一个带有回调函数参数的函数
function HelloMessage(callback)
  -- 在下面,我们将字符串“sup”作为参数传递给回调函数
  callback("sup")
end

-- 在下面,我们调用之前定义的函数
-- 并将一个回调函数传递给它(也称为"handler")
HelloMessage(function(message)
  print(message) --“sup”被打印出来
end)

我不明白它是如何运作的。它是如何将“sup”传递给message参数的??

点赞
用户2858170
用户2858170
HelloMessage(function(message) print(message) end)

基本上等价于

do
  local callback = function(message) print(message) end
  callback("sup")
end

这又等价于

do
  local message = "sup"
  print(message)
end

function(message) print(message) end定义了一个匿名函数,并立即由HelloMessage作为函数参数引用,在HelloMessage作用域内成为一个局部变量callback

2019-12-14 08:55:44
用户10213964
用户10213964
cb_function = function( var_txt ) print("var_txt = ", var_txt ) end

function HelloMessage( callback_func )
  if type( callback_func ) == "function" then --只检查是否传递了函数
     callback_func( "向回调函数输出" )
  end
end

HelloMessage( cb_function ) --传递回调函数
2019-12-14 15:52:50