Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何在2.lua之间调用函数_Function_Lua_Call_Coronasdk - Fatal编程技术网

Function 如何在2.lua之间调用函数

Function 如何在2.lua之间调用函数,function,lua,call,coronasdk,Function,Lua,Call,Coronasdk,这就是我在main.lua中从menu.lua调用函数的方式 local menu = require("menu") menu.drawMenu() 但是我怎么从菜单的main.lua调用函数呢?可能吗?或者设置一个监听器或类似的东西您可以通过在环境中做一些杂耍来实现,尽管这可能会产生影响,并且不能直接移植到Lua 5.2: -- main.lua mainfunction = function() print"main function" end menu = require

这就是我在main.lua中从menu.lua调用函数的方式

local menu = require("menu")

menu.drawMenu()     

但是我怎么从菜单的main.lua调用函数呢?可能吗?或者设置一个监听器或类似的东西

您可以通过在环境中做一些杂耍来实现,尽管这可能会产生影响,并且不能直接移植到Lua 5.2:

-- main.lua
mainfunction = function() print"main function" end

menu = require"menu"
env=getfenv(menu.drawmenu) -- get the original environment
env=setmetatable(env,{__index=_G}) -- look up all variables not existing in that
                                   -- environment in the global table _G
menu.drawmenu()

-- menu.lua
menu={}
menu.drawmenu=function()
    print'drew menu'
    mainfunction()
end
return menu

您可以通过对环境进行一些调整来实现这一点,尽管这可能会产生影响,并且无法直接移植到Lua 5.2:

-- main.lua
mainfunction = function() print"main function" end

menu = require"menu"
env=getfenv(menu.drawmenu) -- get the original environment
env=setmetatable(env,{__index=_G}) -- look up all variables not existing in that
                                   -- environment in the global table _G
menu.drawmenu()

-- menu.lua
menu={}
menu.drawmenu=function()
    print'drew menu'
    mainfunction()
end
return menu

如果您只是希望为菜单提供操作,那么在单击菜单项时使用一组回调函数(在构建GUI元素时使用)是否会更好

此链接可能对您有所帮助。

如果您只是想为菜单提供操作,那么在单击菜单项时使用一组回调函数(在构建GUI元素时使用)是否更好

此链接可能对您有所帮助。

您可以通过将一个函数作为参数传递给另一个函数来设置回调函数。因此,请扩展您的示例代码:

-- main.lua
local menu = require("menu")
function drawMain()
  print("main")
end function
menu.drawMenu(drawMain)

-- menu.lua
menu = {}
menu.drawMenu = function(callback)
    print("menu")
    callback()
end
return menu

可以通过将函数作为参数传递给另一个函数来设置回调函数。因此,请扩展您的示例代码:

-- main.lua
local menu = require("menu")
function drawMain()
  print("main")
end function
menu.drawMenu(drawMain)

-- menu.lua
menu = {}
menu.drawMenu = function(callback)
    print("menu")
    callback()
end
return menu

对不起,我是编程新手,所以基本上这个回调是在我的main.lua,i call menu.binary_op(5,3,plus),它会调用另一个本地函数,并返回一些东西给我,对吗?我想做的是在我的menu.lua中,它会画一个按钮,当用户点击它时,它会触发一个函数,我如何让我的main.lua知道menu.lua中的函数已被触发?有几种方法可以做到这一点。最简单的方法可能是,在主程序中定义希望菜单触发的函数,然后将它们作为参数传递给菜单函数。在我的回答中,我发布了将函数作为参数传递给其他函数的示例代码。是的,当main.lua调用init()时,我将函数从main.lua传递给menu.lua函数位于menu.lua。thx!!=)对不起,我是编程新手,所以基本上这个回调是在我的main.lua,i call menu.binary_op(5,3,plus),它会调用另一个本地函数,并返回一些东西给我,对吗?我想做的是在我的menu.lua中,它会画一个按钮,当用户点击它时,它会触发一个函数,我如何让我的main.lua知道menu.lua中的函数已被触发?有几种方法可以做到这一点。最简单的方法可能是,在主程序中定义希望菜单触发的函数,然后将它们作为参数传递给菜单函数。在我的回答中,我发布了将函数作为参数传递给其他函数的示例代码。是的,当main.lua调用init()时,我将函数从main.lua传递给menu.lua函数位于menu.lua。thx!!=)