首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >根据给定给函数Lua的变量选择要写入的数组

根据给定给函数Lua的变量选择要写入的数组
EN

Stack Overflow用户
提问于 2015-12-10 08:53:09
回答 2查看 59关注 0票数 1

我试图运行以下代码:

代码语言:javascript
运行
AI代码解释
复制
function calcs.grps(Number,ion_color)
    grp .. ion_color .. Y[Number] = (ion_py_mm)
    grp .. ion_color .. Z[Number] = (ion_pz_mm)
end

在Lua脚本中,数组已经存在(例如grp2Y、grp5Z等),我想使用这个函数根据输入的两个变量填充它们。我不断地得到错误'.‘’。我做错了什么?

使它具体化一点:

我在模拟中“飞行”120个离子。这实际上是由10个离子组成的12组。10的单个组由ion_color来区分,它是一个从1到12的整数值。变量'Number‘在进入下一个颜色之前每一次只循环1到10次。一旦我填充了这些数组,我就想得到每个组的标准偏差。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-10 09:12:59

您不能“构造”变量的名称,但是可以构造一个索引。使用两个层次的嵌套表。

代码语言:javascript
运行
AI代码解释
复制
function calcs.grps(Number,ion_color)
    ion['grp' .. ion_color .. 'Y'][Number] = (ion_py_mm)
    ion['grp' .. ion_color .. 'Z'][Number] = (ion_pz_mm)
end

嗯,实际上可以,因为所有全局变量都只是_G表中的条目,但是不要这样做,因为它是坏的-它是不可读的,会使东西溢出到其他您不打算做的函数,等等。

票数 3
EN

Stack Overflow用户

发布于 2015-12-10 11:39:03

对您的问题的技术回答是简单地索引_G,_G是一个包含所有全局变量的表:

代码语言:javascript
运行
AI代码解释
复制
function calcs.grps(Number,ion_color)
    _G['grp' .. ion_color .. Y'][Number] = (ion_py_mm)
    _G['grp' .. ion_color .. 'Z'][Number] = (ion_pz_mm)
end

但我想更好的问题是你为什么不这样组织..。

代码语言:javascript
运行
AI代码解释
复制
local ions = {
    Red = {
        {
            Y = 0, --Y property
            Z = 0 --Z property
        },
        --Continue your red ions
    },
    NewColor = {
            Y = 0, --Y property
            Z = 0 --Z property
        },
        --Continue this color's ions
    },
    --You get the idea
}

function calcs.grps(color, number)
    ions[color][number].Y = (ion_py_mm)
    ions[color][number].Z = (ion_pz_mm)
end

然后,您将传递一个颜色,以及一个指示该颜色的哪个离子的数字。

看上去干净多了,海事组织。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34207455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档