gpt4 book ai didi

function - Lua - 执行存储在表中的函数

转载 作者:行者123 更新时间:2023-12-04 13:40:31 25 4
gpt4 key购买 nike

我能够将函数存储到表中。但是现在我不知道如何调用它们。最终表将有大约 100 个调用,所以如果可能的话,我想像在 foreach 循环中一样调用它们。谢谢!

这是表的定义方式:

game_level_hints = game_level_hints or {}
game_level_hints.levels = {}
game_level_hints.levels["level0"] = function()
return
{
[on_scene("scene0")] =
{
talk("hint0"),
talk("hint1"),
talk("hint2")
},
[on_scene("scene1")] =
{
talk("hint0"),
talk("hint1"),
talk("hint2")
}
}
end

Aa和函数定义:
function on_scene(sceneId)
-- some code
return sceneId
end

function talk(areaId)
-- some code
return areaId
end

编辑:

我修改了函数,所以它们会有更多的上下文。基本上,他们现在返回字符串。 我希望发生的是,在调用函数结束时,我将有一个包含所有这些字符串的表(最好是级别表)。

最佳答案

简短回答:要调用存储在数组中的函数(引用),只需添加 (parameters) ,正如您通常所做的那样:

local function func(a,b,c) return a,b,c end
local a = {myfunc = func}
print(a.myfunc(3,4,5)) -- prints 3,4,5

实际上,您可以将其简化为
local a = {myfunc = function(a,b,c) return a,b,c end}
print(a.myfunc(3,4,5)) -- prints 3,4,5

长答案:您没有描述您的预期结果是什么,但是您所写的内容很可能没有达到您的预期。拿这个片段:
game_level_hints.levels["level0"] = function()
return
{
[on_scene("scene0")] =
{
talk("hint0"),
}
}
end

【问题更新后本段不再适用】您引用 on_scenetalk函数,但您没有将这些函数“存储”在表中(因为您在问题中明确引用了它们,我认为问题与这些函数有关)。您实际上调用这些函数并存储它们返回的值(它们都返回 nil ),因此当执行此片段时,您会在尝试存储 nil 时收到“表索引为零”错误。使用 nil作为索引。

如果你想调用你存储在 game_level_hints.levels["level0"] 中的函数,你只要做 game_level_hints.levels["level0"]()

关于function - Lua - 执行存储在表中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com