C# ma this
, a VB ma ME
. Co to jest odpowiednik Lua?Jak odniesienie do samego obiektu w Lua?
Próbuję odwołać się do rodzica klasy skryptu w Roblox.
C# ma this
, a VB ma ME
. Co to jest odpowiednik Lua?Jak odniesienie do samego obiektu w Lua?
Próbuję odwołać się do rodzica klasy skryptu w Roblox.
Z Lua documentation section 2.5.9 odniesienie samo jest zwykle self
:
Składnia okrężnicy służy do definiowania metod, czyli funkcje, które mają niejawny dodatkowy parametr
self
. Zatem stwierdzeniefunction t.a.b.c:f (params) body end
jest cukier syntaktyczny dla
t.a.b.c.f = function (self, params) body end
As Greg pointed out already nazwa szukasz jest self
.
Należy jednak pamiętać, że Lua nie jest językiem OOP ani językiem czysto proceduralnym, ani funkcjonalnym. Po prostu zapewnia wszystkie mechanizmy niskiego poziomu do implementacji projektu OOP. Jedna z zasad projektowania została wyrażona jako "zapewnić mechanizm, a nie politykę". Z tego powodu nie można zagwarantować, że środowisko, w którym działasz, używa nawet dziedziczenia lub że możesz znaleźć rodzica dla dowolnego obiektu.
To byłby dobry pomysł, aby przejrzeć sekcje instrukcji Lua, Programowanie w Lua i Wiki, które odnoszą się do OOP funkcje:
W Lua, będziesz potrzebować wartości "ja". Jednak używasz ROBLOX, który jest piaskownicą. Każdy skrypt jest uruchamiany w jego własnym wątku, i odwoływać się do skryptu, musisz użyć „scenariusz”, czyli script.Parent
local Table = {}
Table.Var = "Testing"
function Table:Test()
print(self.Var)
end
Table:Test()
lub
local Table = {}
Table.Var = "Testing"
function Table.Test(self)
print(self.Var)
end
Zarówno funkcja zrobi to samo Dokładna rzecz.
--Edit--
Działa to tylko z tabelami. Jeśli próbujesz uzyskać rodzica skryptu, musisz użyć skryptu.Parent
- Uwaga: script.Parent powróci tam, gdzie znajduje się skrypt. Jeśli dodasz innego rodzica, script.Parent.Parent, zwróci to rodzic rodzica i tak dalej.
Zmieniłem "LUA" na Lua dla ciebie.Lua to właściwy rzeczownik, nazwa Księżyca Ziemi, po portugalsku. To nie jest akronim. – RBerteig