세 개의 루프가 있지만 결과가 다른 이유는 무엇입니까?루아 표 값을 변경할 때?
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
-
LUA (5.1)
- 1 진정 표 A의 모든 요소에 1을 추가 할 수 있지만 2 & 3 변경 아무것도. 왜?
- 는 I이 세 블록의 OP 코드는 제 1 블록은 이후 표 A의 값을 변경 설정 가능한 작전을 갖는 것으로 볼 수 있지만 2 또는 3이되지 않은 블록 chunkspy를 사용한다. 블록 & 그냥 할 5 5 261; 1 (즉, 5를 레지스터에 추가 하나 테이블에 값을 저장하지 않음), 이것이 일어나는 이유는 무엇입니까?
'v'는 루프 내부에 존재하는 간단한 로컬 변수이기 때문에. 'v' 자체를 수정해도 테이블의 데이터는 수정되지 않습니다. –