편집 : 명확한 게시물 및 예와 관련하여 루아에서 원하는 참조 유형이 없습니다. 변수에서 다른 변수를 참조하려고합니다. 루아에서 변수는 단순히 값의 이름입니다. 그게 전부 야.
다음 작품 b = a
가 동일한 테이블 값을 참조 모두 a
및 b
잎 때문에 :
a = { value = "Testing 1,2,3" }
b = a
-- b and a now refer to the same table
print(a.value) -- Testing 1,2,3
print(b.value) -- Testing 1,2,3
a = { value = "Duck" }
-- a now refers to a different table; b is unaffected
print(a.value) -- Duck
print(b.value) -- Testing 1,2,3
당신은 참조로로 루아에있는 모든 변수 할당 생각할 수 있습니다.
이것은 기술적으로 테이블, 함수, 동시 루틴 및 문자열에 해당됩니다. 도 마찬가지 일 수 있습니다.은 숫자, 부울 및 nil에 해당 할 수 있습니다. 이는 이들이 변경 불가능한 유형이기 때문에 프로그램에 관한 한 차이가 없습니다. 예를 들어
:
t = {}
b = true
s = "testing 1,2,3"
f = function() end
t2 = t -- t2 refers to the same table
t2.foo = "Donut"
print(t.foo) -- Donut
s2 = s -- s2 refers to the same string as s
f2 = f -- f2 refers to the same function as f
b2 = b -- b2 contains a copy of b's value, but since it's immutable there's no practical difference
-- so on and so forth --
짧은 버전 : 이것은 단지 루아에서 유저 데이터 및 테이블 변경할 유형에 대한 실제적인 의미를 가지고있다. 두 경우 모두 할당은 값 (개체의 복제본이나 복사본이 아니라 포인터 할당)이 아닌 참조를 복사하는 것입니다.
출처
2012-06-27 02:16:06
Mud
하지만 난 그냥 시도하고 주요 포스트의 PS의 예제를 넣었습니다 - 당신이 작동하지 않습니다하려는 어떤 – Greg
을 작동하지 않을 것 같다. 루아의 할당은 값에 대한 참조를 복사합니다. 변수는 값을 포함하며 값 자체는 아닙니다. 변수에 대한 포인터/참조를 다른 변수에 저장할 수 없습니다. – Mud
ok 고마워요. 제가하고있는 일이 가능할 것 같아요. 그렇지만 변수를 테이블에 집에 넣을 필요가 있을까요? – Greg