gpt4 book ai didi

lua - 将多个返回值存储为命名表键

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

我有一个 Lua 函数可以计算一些值并返回它们。例如:

function calculateStats()
return { spin=1, zoom=2, rotate=3, dist=4 }
end

在一个调用它的地方,我需要存储这些值以供以后比较。在这里,出于命名空间的目的,我更喜欢将它们放在表格中:

function foo:startup()
self.initialState = calculateStats()
end

但是,还有一个地方每秒调用这个函数很多次。为了避免不必要的垃圾收集,我宁愿不为结果分配一个表,而是将它们保留为局部变量。所以现在我想切换到:

function calculateStats()
return 1, 2, 3, 4
end

function foo:onRenderFrame()
local spin, zoom, rotate, dist = calculateStats()
end

不幸的副作用是我最终将我的启动函数写成:

function foo:startup()
local spin, zoom, rotate, dist = calculateStats()
self.initialState = {spin=spin,zoom=zoom,rotate=rotate,dist=dist}
end

有没有更好的方法将索引返回值与名称相关联并将它们存储在表中,这样我就不会连续三次重复相同的名称?

最佳答案

您可以采用的一个简单模式是将一个表传递给 calculateStats,然后让它返回表中的结果或以解压缩的形式返回它。例如:

function calculateStats(t)
if not t then return 1, 2, 3, 4 end

t.spin, t.zoom, t.rotate, t.dist = 1, 2, 3, 4
return t
end

这允许您保持 foo:onRenderFrame 不变,foo:startup 需要一个小改动:

function foo:startup()
self.initialState = calculateStats{}
end

关于lua - 将多个返回值存储为命名表键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27586985/

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