作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我正在尝试使用 Lua 来配置 C++ 应用程序,但在配置出现问题时无法生成有用的消息,而不是 Lua 语法。 例如,假设以下是一个有效的配置: foo = { a = 0, b = 'bar' }
我是一名优秀的程序员,十分优秀!