三個循環但結果不同,爲什麼? (在LUA 5.1)更改lua表值時?
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
- 真正增加1到表中的所有元素,但 & 改變什麼。 爲什麼?
- 我使用chunkspy看到這些三個塊的操作碼發現,在第一嵌段它具有可設定的運算改變表中的值之後,但阻止或沒有。 Block & just do add 5 5 261; 1(意味着將1添加到註冊5,但不會將值保存到表),爲什麼會發生這種情況?
因爲'v'是循環內存在的一個簡單的局部變量。修改'v'本身不會修改表中的數據。 –