了解 LUA 回调

问题描述 投票:0回答:2

例如这段代码:

-- Definine a function that takes a callback function as a parameter
function HelloMessage(callback)
  callback("sup")
end

-- Call the function defined above passing a callback function
HelloMessage(function(message) 
  print(message) -- "sup" gets printed
end)

我不明白它是如何工作的。它是如何将sup传入message参数的?

lua callback
2个回答
1
投票
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
定义了一个匿名函数,该函数立即被函数参数
callback
引用,这是
HelloMessage
作用域中的局部变量。


0
投票
cb_function = function( var_txt ) print("var_txt = ", var_txt ) end

function HelloMessage( callback_func )
  if type( callback_func ) == "function" then --just chek is func passed
     callback_func( "Print to callback function" )
  end
end

HelloMessage( cb_function ) --passing call back function
© www.soinside.com 2019 - 2024. All rights reserved.