C# a this
et VB a ME
. Quel est l'équivalent de Lua?Comment un objet se réfère-t-il dans Lua?
J'essaie de référencer le parent de la classe de script dans Roblox.
C# a this
et VB a ME
. Quel est l'équivalent de Lua?Comment un objet se réfère-t-il dans Lua?
J'essaie de référencer le parent de la classe de script dans Roblox.
De l'Lua documentation section 2.5.9, la référence de soi est généralement self
:
La syntaxe du côlon est utilisé pour la définition des méthodes, à savoir, les fonctions qui ont un paramètre supplémentaire implicite
self
. Ainsi, la déclarationfunction t.a.b.c:f (params) body end
est le sucre syntaxique pour
t.a.b.c.f = function (self, params) body end
Comme Greg pointed out already, le nom que vous recherchez est self
. Cependant, sachez que Lua n'est pas un langage OOP, pas plus qu'un langage purement procédural ou fonctionnel. Il fournit simplement tous les mécanismes de bas niveau pour implémenter une conception OOP. Un des principes de conception a été exprimé: «fournir un mécanisme, pas une politique». Pour cette raison, il n'existe aucun moyen de garantir que l'environnement dans lequel vous exécutez utilise l'héritage ou que vous pouvez trouver un parent pour un objet donné.
Ce serait une bonne idée de revoir les sections du manuel Lua, programmation en Lua et le Wiki qui se rapportent à POO caractéristiques:
Dans Lua, vous voulez la valeur "self". Cependant, vous utilisez ROBLOX, qui est un bac à sable. Chaque script est exécuté dans son propre fil, et de référencer le script, vous devrez utiliser « script », à savoir script.Parent
local Table = {}
Table.Var = "Testing"
function Table:Test()
print(self.Var)
end
Table:Test()
ou
local Table = {}
Table.Var = "Testing"
function Table.Test(self)
print(self.Var)
end
deux fonction fera la même chose exacte.
--Edit--
Cela ne fonctionne avec des tables. Si vous essayez d'obtenir le parent du script, vous devez utiliser script.Parent
--Note script.Parent retournera où le script est situé. Si vous ajoutez un autre parent, script.Parent.Parent, il retournera le parent du parent, et ainsi de suite.
J'ai changé "LUA" en Lua pour vous.Lua est un nom propre, le nom de la Lune de la Terre, en portugais. Ce n'est pas un acronyme. – RBerteig