Groso. esto también me sirve, no tanto para usarlo sino para mirar un poco
de código a ver como está hecho (OpenStruct) porque por lo que veo yo
necesito hacer algo *similar*.
gracias por el dato.
On 9/12/07, Emmanuel Oga <[EMAIL PROTECTED]> wrote:
>
> No es un reemplazo para method_missing, para para tu caso especifico
> --missing accessors-- puede servirte lo siguiente:
>
> require 'ostruct'
>
> usuario= OpenStruct.new
> usuario.apellido= "Cibrian"
> usuario.nombre= "Pepito"
> usuario.prefiere= "Hombres"
>
> puts "#{ usuario.nombre} #{ usuario.apellido} prefiere #{ usuario.prefiere
> }"
>
> usuario.edad= :indefinida
>
> puts "Edad de #{ usuario.nombre} #{ usuario.apellido}: #{ usuario.edad}"
>
>
>
> Si conoces los campos de tu registro, en vez de usar OpenStruct podes usar
> Struct:
>
>
>
> Struct.new "Usuario", :nombre, :apellido, :edad # <<< Genera clase
> Struct::Usuario
>
> usuario= Struct::Usuario.new "Carlos", "Mata", 45
>
> puts usuario.nombre
>
> usuario.values.each do |v|
> puts v
> end
>
>
>
> *Porta <[EMAIL PROTECTED]>* escribió:
>
> Que campeón. Justo lo que quería.
> mil gracias....
>
> On 9/12/07, Aureliano Calvo <[EMAIL PROTECTED] > wrote:
> >
> > Bueno, en ruby cuando se ejecuta un método no definido se llama al
> > método "method_missing". Y como hacer
> >
> > a.b = c es llamar al método "b=", si no definiste ejecuta
> > method_missing.
> >
> > La documentación de esto está en
> > http://www.ruby-doc.org/core/classes/Kernel.html#M005929
> >
> > Bueno, me voy a dormir,
> > Aureliano.
> >
> > 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.
> > >
> > > ____________________________________________
> > > From: "Aureliano Calvo" < [EMAIL PROTECTED] >
> > > To: "Grupo Ruby Argentina" <[email protected]>
> > > Date: Wed, 12 Sep 2007 00:14:39 -0300
> > > Subject: Re: [RubyArg] Buenas, y primera consulta.
> > >
> > > No sé cómo funciona el autoload de Perl, pero en ruby hay algo con ese
> > > nombre.
> > >
> > > autoload(:MyModule, "/usr/local/lib/modules/my_module.rb")
> > >
> > > hacé que cuando uses MyModule por primera vez ejecute
> > > "/usr/local/lib/modules/my_module.rb"
> > >
> > >
> > > ________________________________________________
> > > From: Porta < [EMAIL PROTECTED] >
> > > To: [email protected]
> > > Date: Wed, 12 Sep 2007 00:02:23 -0300
> > > Subject: [RubyArg] Buenas, y primera consulta.
> > >
> > > Buenas a todos.
> > > Me interesa aprender un poco de ruby, y ya al primer paso encuentro
> > un
> > > problema que no sé como resolver.
> > > A ver si alguien puede iluminarme.
> > >
> > > Sabrá alguien decirme si en ruby existe un equivalente del AUTOLOAD
> > de
> > > perl? no soy un teórico, así que me cuesta encontrar las palabras para
> > > explicar *correctamente* lo que necesito... si alguien sabe como
> > funciona el
> > > autoload en perl me vá a entender. sino, me dicen y busco alguna forma
> > clara
> > > de explicarlo...
> > > Lamento que mi primer mail sea tan difuso y poco claro. Espero
> > mejorarlos
> > > con el tiempo.
> > >
> > > Gracias a todos.
> > >
> > > Porta.
> > >
> > >
> > >
> > > _______________________________________________
> > > 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
>
>
> ------------------------------
>
> Los referentes más importantes en compra/venta de autos se juntaron:
> Demotores y Yahoo!. Ahora comprar o vender tu auto es más fácil.
> Visitá http://ar.autos.yahoo.com/
>
>
> _______________________________________________
> 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