Pau*_*aul 3 arrays lua nested key
自学 lua 并尝试找出当您拥有一组嵌套表时如何访问嵌套表中的键和值。例如,如果我有下表:
local coupledNumbers = {}
local a = 10
for i = 1, 12 do
for j = 1, 12 do
table.insert(coupledNumbers, {ID = a, result = i*j})
a = a + 10
end
end
Run Code Online (Sandbox Code Playgroud)
这个循环会给我钥匙(1到144)
for k, v in pairs (coupledNumbers) do
print (k)
end
Run Code Online (Sandbox Code Playgroud)
这个循环会给我值(类似于:表:0xc475fce7d82c60ea)
for k, v in pairs (coupledNumbers) do
print (v)
end
Run Code Online (Sandbox Code Playgroud)
我的问题是如何进入表格内的值?
我如何获得 ID 和结果。我认为这样的事情会起作用:
print (coupledNumbers[1].["ID"])
Run Code Online (Sandbox Code Playgroud)
或者
print (coupledNumbers[1].["result"])
Run Code Online (Sandbox Code Playgroud)
但它给出了一个错误。
正如阿利斯特正确指出的那样,错误恰恰在于放入.[。但我想补充一点:点符号和括号符号可以做同样的事情,但情况并非总是如此。
我想补充的是,括号表示法允许您使用变量来引用字段。例如,如果您有以下作品:
local function getComponent(color, component)
return color[component]
end
local c = {
cyan = 0,
magenta = 11,
yellow = 99,
black = 0
}
print(getComponent(c, "yellow"))
Run Code Online (Sandbox Code Playgroud)
您根本无法使用点表示法来做到这一点。总是会返回以下内容nil:
local function getComponent(color, component)
return color.component
end
Run Code Online (Sandbox Code Playgroud)
这是因为它会搜索一个名为componentin的字段color(在该模型中该字段不存在)。
所以,基本上,我想强调的是,如果您知道该字段,点表示法就可以,但是,如果可能有所不同,请使用括号。
点符号和括号符号是不同的。您的错误是使用它们来索引一件事。( [1].["ID"]) 问题在于.[
点符号: Table.a.b
括号表示法: Table["a"]["b"]
如果你想混合它们,你可以做Table.a["b"]或Table["a"].b
所以你想做类似coupledNumbers[1].ID或coupledNumbers[1]["ID"]
据我所知 edit: See Pedro's answer for information on the use of variables in dot notation.,这实际上只是个人偏好,尽管您无法使用点表示法获得数组的第 n 个项目,因此您将始终使用[n]