Anuncios Google

Buen tutorial de LUA orientado a objetos?

Todo es mirar y mirar, y veo muchos 'Hello World' pero si buscas un poco más avanzado, los tutoriales brillan por su ausencia. Conoceis buenos tutos de LUA con OOP? O ejemplos... Supongo que algún coder habrá hecho algo medianamente grande y extenso que haya tenido que usar OOP.

Por si venís buscando lo mismo que yo, por ahora he encontrado algo muy básico en una wiki, sobre como trabajar con objetos y constructores: http://lua-users.org/wiki/SimpleLuaClasses

Si tuviera tiempo (Estoy de exámenes) plantaba aquí un tuto yo mismo de programación OOP hahahaha Saludos! :D

 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Ese es el único que encontré

Ese es el único que encontré por aquí xD. Y ya que te veo te doy las grácias ^_^ Lo que buscaba es que en ese tutorial creas las estructuras, pero no defines ningún método para crear nuevos objetos. Copio el ejemplo que ví por la red que es lo más sencillito que hay, esta muy bien.

 

Account = {}
Account.__index = Account
 
function Account.create(balance)
   local acnt = {}             -- our new object
   setmetatable(acnt,Account)  -- make Account handle lookup
   acnt.balance = balance      -- initialize our object
   return acnt
end
 
function Account:withdraw(amount)
   self.balance = self.balance - amount
end
 
-- create and use an Account
acc = Account.create(1000)
acc:withdraw(100)

 

Ahora, no me preguntes como se mete en Lua polimorfismo o herencia porque aún no lo he mirado :P . Con respecto a polimorfismo... Si nombro un método como fulanito:dibuja() y en otro objeto distinto como menganito:dibuja()... después se puede crear un vector que almacene los dos 'objetos' (En realidad son estructuras distintas, Lua no es OOP) y llamar simplemente vector[i]:dibuja() ?

No conozco mucho Lua, pero al ver que es de tipado dinámico me imagino que podría ser xD.

Imagen de Chimecho

Ah

Sí, lo que dices es correcto, si existen esas funciones debería funcionar.

Y sobre lo de crear objetos, el ejemplo está muy bien, lo que hace al poner setmetatable(acnt, Account) (y como Account tiene definido __index = Account) es que, todo "método" que invoques usando el nuevo "objeto" y que no exista en el, lo busque en la tabla Account.

Yo lo haría así: setmetatable(acnt, {__index = Account})

Eso es ahora, porque antes lo hacía de otra forma, puedes verlo en el source de AnimLib xD

Saludos!, cualquier otra duda, pregunta.



PSP FAT [5.00 M33-6] [6.60 ME] [Hard Moded] / Nintendo Wii [4.1U] [cIOS Hermes] [D2X cIOS] / iPhone 3G [4.2.1] [BB 05.13.04] [redsn0w] / iPod Touch 4 [6.1] [evasi0n]

07/05/10: Tuve el placer de llamarle con todo derecho "N00B" a molotovi xDDD

Recuerda: Sé el intérprete -_-

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.