1. 程式人生 > >lua table傳值是傳的引用

lua table傳值是傳的引用

local randArray = {}

for _ = 1, itemNum do

        local i = math.random(typeNum)

        randArray[_] = ConfigMap[i]

randArray[_].flagId = _

end

當我這樣做的時候,每當隨機出來的值有相同的時候,flagId的值就變得混亂了,而我希望flagId代替randArray的索引,應該是1 2 3 4 5 ... ...

混亂的現象是當前值跟前面隨機出來的值有相同的時候,發現就算還沒有執行randArray[_].flagId=_,但卻已經有flagId這個欄位了,

如果執行完這行,之前的那個值中的flagId欄位會變得跟後面的一樣。

後來無意中發現,已經新增過的值,在ConfigMap裡面也有flagId欄位了!

我的天,搞了我半天,實在是太奇怪了!

原來原因是:

lua 中表的傳值,傳的是引用!