문제

C#가 있습니다 this 그리고 VB는 있습니다 ME. LUA 동등한 것은 무엇입니까?

Roblox에서 스크립트 클래스의 부모를 참조하려고합니다.

도움이 되었습니까?

해결책

로부터 LUA 문서 섹션 2.5.9, 자체 참조는 일반적으로입니다 self:

결장 구문은 방법을 정의하는 데 사용됩니다. 즉, 암시 적 추가 매개 변수가있는 함수 self. 따라서 진술

function t.a.b.c:f (params) body end

구문 설탕입니다

t.a.b.c.f = function (self, params) body end

다른 팁

처럼 그렉은 이미 지적했다, 당신이 찾고있는 이름은입니다 self.

그러나 LUA는 순전히 절차 적 또는 기능적 언어보다 OOP 언어가 아닙니다. 그것은 단순히 OOP 설계를 구현하기위한 모든 낮은 레벨 메커니즘을 제공합니다. 설계 원칙 중 하나는 "정책이 아닌 메커니즘 제공"으로 표현되었습니다. 그로 인해, 당신이 실행중인 환경에서 상속을 사용하거나 주어진 객체에 대해 부모를 찾을 수 있음을 보장 할 방법이 없습니다.

LUA 매뉴얼의 섹션, LUA의 프로그래밍 및 OOP 기능과 관련된 Wiki의 섹션을 검토하는 것이 좋습니다.

Lua에서는 "자기"가치를 원할 것입니다. 그러나 샌드 박스가있는 roblox를 사용하고 있습니다. 각 스크립트는 자체 스레드에서 실행되며 스크립트를 참조하려면 "스크립트", 즉 스크립트를 사용해야합니다.

local Table = {}
Table.Var = "Testing"

function Table:Test()
print(self.Var)
end
Table:Test()

또는

local Table = {}
Table.Var = "Testing"
function Table.Test(self)
print(self.Var)
end

두 기능 모두 똑같은 일을합니다.

--편집하다--

테이블과 만 작동합니다. 스크립트의 부모를 얻으려고하는 경우 script.parent를 사용해야합니다.

-노트 script.parent는 스크립트가있는 위치에 반환됩니다. 다른 부모 인 script.parent.parent를 추가하면 부모의 부모를 반환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top