oop - poo - programacion orientada a objetos
¿Cómo se hace referencia un objeto en Lua? (4)
C # tiene this
y VB tiene ME
. ¿Cuál es el equivalente de Lua?
Estoy tratando de hacer referencia al padre de la clase de script en Roblox.
En Lua, querrás el valor "propio". Sin embargo, estás usando ROBLOX, que es sandboxed. Cada script se ejecuta en su propio hilo, y para hacer referencia al script, deberá usar "script", es decir, script.Parent
De la documentación de Lua sección 2.5.9 , la autorreferencia suele ser self
:
La sintaxis de dos puntos se usa para definir métodos, es decir, funciones que tienen un
self
adicional de parámetro implícito. Por lo tanto, la declaración
function t.a.b.c:f (params) body end
es azúcar sintáctico para
t.a.b.c.f = function (self, params) body end
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
Ambas funciones harán exactamente lo mismo.
--Editar--
Eso solo funciona con tablas. Si intenta obtener el elemento primario del script, debe utilizar script.Parent
--Nota script.Parent devolverá donde se encuentra el script. Si agrega otro padre, script.Parent.Parent, devolverá el padre del padre, y así sucesivamente.
Como ya señaló Greg , el nombre que está buscando es self
.
Sin embargo, tenga en cuenta que Lua no es un lenguaje OOP más de lo que es un lenguaje puramente procesal 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.
Sería una buena idea revisar las secciones del manual de Lua, la Programación en Lua y el Wiki que se relaciona con las características de OOP:
- Lua Manual , especialmente las secciones 2.5.8 , 2.5.9 y 2.8 .
- PiL Capítulo 16 , vinculado a la copia en línea de la primera edición, que se escribió en el momento de Lua 5.0. Lea la copia en línea, pero tenga en cuenta que la versión actual de Lua es lo suficientemente diferente que comprar la segunda edición es muy recomendable.)
- Lua Wiki en OOP , especialmente el tutorial y el artículo sobre clases simples .