function - lua函数包括表中的参数

标签 function parameters lua

我是 lua 新手,想要将函数存储在表中,并在“存储时间”给出参数。

尝试了这段代码,但显然不是我想要的。

local functable = {}
local function myfunc(x,y)
    print(x ,y)
end

table.insert(functable, {func = myfunc})
table.remove(functable).func("hello", "World")

我想将变量存储在“插入”处,因此我尝试将参数存储在表中:

functable = {}

function myfunc()
    print(functable[#functable].p1 ,functable[#functable].p2)
end

table.insert(functable, {func = myfunc, p1="Hello", p2="World"})
table.remove(functable).func()

但是这段代码不起作用。

有人能指出我正确的方向吗?

最佳答案

您的代码的问题是,一旦您执行table.remove,您的p1p2就无法在myfunc<中检索 使用functable[#functable]。如果您输入第二个函数,您将看到打印,但打印将带有表中下一个函数的参数。

table.insert(functable, {func = myfunc, p1="Goodbye", p2="World~"})
table.insert(functable, {func = myfunc, p1="Hello", p2="World!"})
table.remove(functable).func()

输出:

Goodbye World~


我建议的解决方案是在表中设置参数,然后在调用它时将它们应用到您的函数:

functable = {}

local function myfunc(x,y)
    print(x ,y)
end

table.insert(functable, {func = myfunc, params = {"Goodbye", "World~"}})
table.insert(functable, {func = myfunc, params = {"Hello", "World!"}})

local action1 = table.remove(functable)
local action2 = table.remove(functable)

action1.func(table.unpack(action1.params))
action2.func(table.unpack(action2.params))

另一种解决方案是包装您的函数并将参数设置为上值。

这是一个例子:

functable = {}

function myfunc(...)
    local params = {...}

    local function func()
        print(params[1] ,params[2])
    end

    return func
end

table.insert(functable, {func = myfunc("Goodbye", "World~")})
table.insert(functable, {func = myfunc("Hello", "World!")})

table.remove(functable).func()
table.remove(functable).func()

关于function - lua函数包括表中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57713171/

相关文章:

for-loop - Lua - 在 for 循环中更改 'stop' 变量的值,它还会正常终止吗?

c++ - Xbox360 模拟摇杆角度 SDL

lua - do...end block 的自动引入如何用于 goto 语句?

javascript - 通过激活交通灯按钮手动切换灯

xml - XSLT 传递参数

date - 为什么我需要在Grails中解析日期?

search - Google 搜索参数 "gbv"的用途是什么?

function - 返回 true/false 的 PowerShell 函数

php - 如何在 php 中突出显示选定的选项卡?

javascript - jQuery 双动画组合