Hasta yo mismo me digo que es de principiante, porque no puede ser más tonta la duda:
Si tengo almacenada una variable en una tabla, y en la misma quiero usarla con toro objeto, ejemplo:
gnomos = { a = 255, color = color.new(255,255,255,???), }
¿Qué debo colocar en "???"? Porque he probado con "gnomos.a" y salta error =/
Un saludo.
En este caso hay que usar un
En este caso hay que usar un poco del tuto de modulación de DeViaNTe. Ahora, entiendo que quieres modificar externamente el valor de a, y que se refleje en el color, verdad? Prueba esto:
Nótese que uso dos puntos al indexar la tabla, no 1 (usando 2 puntos la tabla es el 1er argumento, recordar).
Ahhhh...
Entiendo, ok, probaré con eso, pero aún así se me ha ocurrido una cosa que también podría funcionar y que podría darme un poco más de personalización...
Un saludo ;D
Pues se pueden combinar ambos
Pues se pueden combinar ambos codes...
Se desgasta menos el teclado, queda más limpio el code y se ve más "Pro" xD
Muy bueno ;D
Muy bueno ;D
Si lo quieres con setters y
Si lo quieres con setters y getters, podrías añadir esto también:
¿Que hace esto? self.r = r or
¿Que hace esto?
self.r = r or self.r;
Es por si no pone nada en el
Es por si no pone nada en el parámetro, si pone algo self.r coge el valor del parámetro r, si no, se queda el mismo valor.
Es decir, si pones nil tomará
Es decir, si pones nil tomará el valor nil y si cuando declaras la función poniendo setColor(255,,,); solamente tomará r el valor 255 y los demás seguirán tal cual no¿
Exacto, en caso de solo
Exacto, en caso de solo querer modificar solo r sería: setColor(255);
OK. Y para modificar "blue"
OK. Y para modificar "blue" sería setColor(,,255); no?
No, eso daría error, en todo
No, eso daría error, en todo caso sería setColor(nil,nil,255)
pero entonces cogerían el
pero entonces cogerían el valor nil
No, para eso está la línea
No, para eso está la línea por la que preguntabas arriba: self.r = r or self.r
self.r tomará el valor que indiques de r. Si le das nil, entonces no cambiará su valor (se igualará a self.r).
Para que me entiendas mejor...
Tienes razón RG, no me había
Tienes razón RG, no me había dado cuenta de que r tenía valor XD, bueno una disculpa, me fijare mas a la próxima.
Un saludo.
Pues eso, así debe de
Pues eso, así debe de ser..
Mira:
self.r = r or self.r;
Aca claramente lo dice, usa el operador or. Osea que si A(r) es nill o false(en caso de que no le pases el parametro a la funcion, si sera falso o nill) devolvera B(self.r) que a fín de cuentas es nill.
Y eso hace que la función no te de error por no pasarle todos los parametros.
Lee este tutorial, yo le di varias repasadas( y se las sigo dando), para poder entenderlo, un saludo.
Bueno...
Eso lo hice hace bastante tiempo (el setter), pero gracias de todas formas.
El favor me lo harías si me dijeras por qué algunos coders ponen "self" en las funciones, porque yo no sé para que diablos es y me vuelvo un poco loco jeje...
Salu2.
No se si sabrás Java o C++,
No se si sabrás Java o C++, pero el self es parecido al this (aunque es algo diferente).
Si pones:
Y usas: gnomos:setA(50), como puedes ver solo llamo a la función con un solo parámetro,y en cambio la he declarado con dos, ya que al usar ":" en vez de ".", el primer parámetro se "elimina" y se convierte en la tabla, o sea, que el self se convierte en la tabla de donde se encuentra la función (es este caso self se convertiria en gnomos).
Correcto, aunque cabe aclarar
Correcto, aunque cabe aclarar que "self" pudo haber sido cualquier otro nombre de variable válido, no importa realmente (a diferencia de Java, donde forzosamente es this).
A ver
Es que hay dos formas de declarar los métodos (funciones) de un objeto (tabla).
La primera, que es la que han estado usando hasta el momento:
Donde puedes poner el nombre que quieras, self, yomismo, o lo que sea. Y la llamas con los dos puntos, así: objeto:print()
Y la segunda, declarar la función a parte, pero de una forma distinta:
Donde para poder acceder al objeto, se debe poner sí o sí self, caso contrario daría error. Además, al declarar la función ya no es necesario poner un parámetro para recibir la tabla. Para llamarla es igual que la anterior, así: objeto:print()
Saludos!
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 -_-
Pero
Pero como hago para que la funcion no solo me sirva con una sola variable de la tabla es decir(un ejemplo, este si me va):
Pero y si quiero añadir otra variable de esa misma tabla, como se hace, he intentado con []:
Pero pues no me va me marca error, alguien sabe como ?, también he intentado con .
Un saludo
Pon un valor del 1 al 100 y
Pon un valor del 0 al 100 y listo! ;)
No...
Me refiero a que quiero utilizar el valor de "a" (255) almacenado en la tabla gnomos, es decir, "gnomos.a" en la función del color, para que más adelante pueda modificar ese valor...
Revisa la documentación pero
Revisa la documentación pero me parece que el rango de valor de alpha es [0,100], pero revisa la docu por si acaso.
Te equivocas =/
Es 255 el máximo.
Prueba
Prueba:
o
Como he mencionado...
No funciona...
Si os sirve de ayuda (aunque no creo que varíe), en realidad la tabla real es así:
¿Has probado de la segunda
¿Has probado de la segunda forma?
Mira prueba así:
Sí...
De ambas formas, pero nada...