在 Lua 表中有两个索引使用同一个值。

我对Lua非常陌生,我的计划是创建一个表。这个表(我称其为test)有200个条目 - 每个条目都有相同的子条目(在这个例子中,子条目是money和age):

这是一种伪代码:

table test = {
    条目1:money = 5 age = 32
    条目2:money = -5 age = 14
    ...
    条目200:money = 999 age = 72
}

我怎样才能在Lua中编写这个?有可能吗?另一个方法是,我将每个子条目编写为一个单独的表:

table money = {}
table age = {}

但对我来说,这不是一种好的方式,所以也许你可以帮助我。

编辑:

这个问题表内嵌表是相关的,但我无法写200x。

点赞
用户312586
用户312586

尝试使用以下语法:

test = {
  { money = 5, age = 32 },
  { money = -5, age = 14 },
  ...
  { money = 999, age = 72 }
}

使用示例:

-- 第二个条目的金钱:
print(test[2].money) -- 输出 "-5"

-- 最后一个条目的年龄:
print(test[200].age) -- 输出 "72"
2012-10-02 11:39:19
用户513763
用户513763

你也可以将问题放在一边,让 test 中有2个序列:moneyage,其中每个条目都在两个数组中具有相同的索引。

test = {
   money ={1000,100,0,50},
   age={40,30,20,25}
}

这样的效果会更好,因为你只有 3 个表的开销,而不是 n+1 个表,其中 n 是条目数量。

无论如何,你都必须输入数据。通常,你会使用一些易于解析的格式,如 CSV、XML 等,并将其转换为表格。像这样:

s=[[
1000 40
 100 30
   0 20
  50 25]]
test ={ money={},age={}}
n=1
for balance,age in s:gmatch('([%d.]+)%s+([%d.]+)') do
   test.money[n],test.age[n]=balance,age
   n=n+1
end
2012-10-02 12:43:10
用户204011
用户204011

你的意思是你不想写"money"和"age" 200x吗?

有几个解决方案,但是你可以写出类似如下的代码:

local test0 = {
 5, 32,
 -5, 14,
 ...
}

local test = {}

for i = 1,#test0/2 do
test[i] = {money = test0[2*i-1], age = test0[2*i]}
end

此外,你可以使用元表并创建一个类,使其完全按照你想要的方式行事。

2012-10-02 15:42:45