Para mi la mejor forma de aprender metaprogramación en ruby es resolver los 10 metakoans que están en http://rubyquiz.com/quiz67.html
Hacelos y después lee el artículo de nuevo. Te va a quedar todo mucho más claro. On 9/12/07, Porta <[EMAIL PROTECTED]> wrote: > gracias.... > > por si a alguien le interesa, de rebote encontré esto: > http://whytheluckystiff.net/articles/seeingMetaclassesClearly.html > parece interesante. bastante cerca también de lo que necesito. > hasta que llegué a esta linea: > def metaclass; class << self; self; end; end > > y ahi me perdí. me marean un poco esos punto y coma. y no hablemos de class > << self; > > eso tiene que ver con con herencia? > alguna lectura recomendada sobre el tema? > > > > > On 9/12/07, Romina Natalia Tulisi < [EMAIL PROTECTED]> wrote: > > > > > > Linda y simple explicación para el autoload de Perl... me hubiese gustado > que alguien me explique el autoload así en su momento... > > De cualquier manera no te hubiese podido ayudar porque soy más que newbie > con ruby. > > Pero es bueno saber que existe algo similar que es tan útil en perl. > > Estoy aprendiendo de rebote :-) > > > > > > > > > > On 9/12/07, Porta < [EMAIL PROTECTED]> wrote: > > > Aureliano. > > > gracias por tu pronta respuesta. > > > lamentablemente, el autoload de perl del que hablo nada tiene que ver > con el de ruby > > > veamos si puedo ampliar un poco la question. > > > > > > (mi léxico sobre el tema es *cero*. no soy un teórico. sepan disculpar.) > > > > > > supongamos que creo una "clase" con perl. (yo lo llamo paquete o > módulo). > > > supongamos mi clase "Usuario". > > > adentro de mi clase Usuario, yo defino diferentes funciones para > *escribir* y *leer* los atributos de esa clase (creo que se llaman > comunmente setters y getters) > > > de modo que con mi objeto Usuario, yo puedo hacer: > > > $usuario->Nombre('Jorge'); > > > (acabo de darle el nombre Jorge a mi $usuario) > > > o decir que > > > $nombre = $usuario->Nombre; > > > (digo que mi variable $nombre es igual al Nombre de mi $usuario) > > > > > > hasta acá, todo bien. la lógica sería tener 2 funciones adentro de mi > clase usuario. una para asignar el nombre y otra para leerlo. o una sola, > que si recibe un parametro lo setea como nombre, y si no recibe parámetro > devuelve el nombre que haya. > > > ahora, si yo en mi clase usuario no definí ninguna función que se llame > Apellido > > > (si intento hacer) > > > $usuario->Apellido('Gomez'); > > > ahi se rompe todo. porque Apellido no existe en ningun lado. > > > > > > Bueno. En perl, la función AUTOLOAD se ejecuta cada vez que uno accede a > alguna propiedad de esa clase. O sea, que adentro del AUTOLOAD yo puedo > *atajar* llamados a funciones que no existen y, por ejemplo, devolver un > error un poco más amable. O sino (lo que a mi me interesa hacer > puntualmente). poder crear "en el aire" ese atributo en mi clase y setearlo > o leerlo según reciba o no parámetros. > > > > > > Más claro ahora? espero que sí. sino, me busco alguna definición más > prolija del autoload en perl. > > > > > > graaaaaacias. > > > > _______________________________________________ > > Ruby mailing list > > [email protected] > > > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > > > > > > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > _______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
