2009-07-01 22 views
5

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.

+5

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

Respuesta

10

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ón

function 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 
9

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:

  • Lua Manual, especialmente las secciones 2.5.8, 2.5.9 y 2.8.
  • PiL Chapter 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 como para comprar la segunda edición.)
  • Lua Wiki on OOP, especialmente el tutorial y el artículo en simple classes.
2

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

1
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.

Cuestiones relacionadas