三个循环但结果不同,为什么? (在lua 5.1中)
1
local a = {{b=5}, {b=4}}
for k,v in ipairs(a) do
v.b = v.b + 1
end
2。
local a = {["b"]=5, ["bb"]=4}
for k,v in pairs(a) do
v = v + 1
end
3。
local a = {5, 4}
for k,v in ipairs(a) do
v = v + 1
end
答案 0 :(得分:1)
此处的问题是,v
对中的k,v
是对值的引用,而不是密钥。
这意味着,v=
只修改了局部变量v
,并且不会影响表本身。你可以改为a[k]=v+1
,它带有2和3的预期结果。
然而,在第一种情况下,v
是对表的引用。在lua中,对表的所有引用都进行了修改表或对该表的任何引用。 This问题包含有关References Vs Values主题的一些有用信息。