C# tiene this
y VB tiene ME
. ¿Cuál es el equivalente de Lua?¿Cómo se hace referencia a un objeto en Lua?
Estoy tratando de hacer referencia al elemento primario de la clase de script en Roblox.
C# tiene this
y VB tiene ME
. ¿Cuál es el equivalente de Lua?¿Cómo se hace referencia a un objeto en Lua?
Estoy tratando de hacer referencia al elemento primario de la clase de script en Roblox.
Desde el Lua documentation section 2.5.9, la referencia sí mismo es por lo general self
:
La sintaxis de colon se utiliza para la definición de métodos, es decir, funciones que tienen un parámetro adicional implícito
self
. Por lo tanto, la declaraciónfunction t.a.b.c:f (params) body end
es el azúcar sintáctica para
t.a.b.c.f = function (self, params) body end
Como Greg pointed out already, el nombre que busca es self
.
Sin embargo, tenga en cuenta que Lua no es un lenguaje OOP más de lo que es un lenguaje puramente de procedimiento o funcional. Simplemente proporciona todos los mecanismos de bajo nivel para implementar un diseño OOP. Uno de los principios de diseño se ha expresado como "proporcionar un mecanismo, no una política". Debido a eso, no hay forma de garantizar que el entorno en el que se está ejecutando utilice incluso la herencia, o que pueda encontrar un padre para cualquier objeto dado.
que sería una buena idea revisar las secciones del manual Lua, programación en Lua, y el Wiki que se relacionan con la POO características:
En Lua, querrá el valor "self". Sin embargo, estás usando ROBLOX, que es sandboxed. Cada secuencia de comandos se ejecuta en su propio hilo, y hacer referencia a la secuencia de comandos, tendrá que utilizar "guión", es decir script.Parent
local Table = {}
Table.Var = "Testing"
function Table:Test()
print(self.Var)
end
Table:Test()
o
local Table = {}
Table.Var = "Testing"
function Table.Test(self)
print(self.Var)
end
Tanto la función hará lo mismo cosa exacta
--Edit--
que sólo funcionan con tablas. Si intenta obtener el elemento primario del script, debe utilizar el script. Parent
--Nota script.Parent devolverá el lugar donde se encuentra el script. Si agrega otro padre, script.Parent.Parent, devolverá el padre del padre, y así sucesivamente.
Cambié "LUA" a Lua por ti.Lua es un nombre propio, el nombre de la Luna de la Tierra, en portugués. No es un acrónimo. – RBerteig