Hola , hoy estaba viendo un screencast de Dr. Nic y contestan algunas de mis
preguntas de este thread y mas ... excelente
http://drnicwilliams.com/2007/03/22/meta-magic-in-ruby-presentation/
On 6/3/07, Federico Brubacher <[EMAIL PROTECTED]> wrote:
Manuel !!
Muchas gracias , espectacular, mas claro imposible !!
Saludos
On 6/3/07, Manuel Aristarán < [EMAIL PROTECTED]> wrote:
>
> Hola Federico,
>
> On 6/3/07, Federico Brubacher < [EMAIL PROTECTED]> wrote:
> > [...]
> >
> > Segun lo q estoy entendiendo cuando hacemos instance_eval de un
> string,
> > accedemos al contexto self de la clase que invoca el instance_eval y
> podemos
> > por ejemplo acceder a sus propiedades ( o cambiarlas dentro del string
> > instance_eval).
> >
> > O sea :
> > estoy en lo correcto con instance_eval?
>
> Absolutamente. Funciona como en otros lenguajes que tienen "eval()"
> (JavaScript, por ejemplo). Como decís, Object#instance_eval te permite
> evaluar (en el contexto del receptor) un string que contenga código
> Ruby o un bloque.
>
> > para que sirve cuando le pasamos un bloque?
>
> Un ejemplo:
>
> objeto.instance_eval("self.algo = 1")
>
> es equivalente a
>
> objeto.instance_eval do
> self.algo = 1
> end
>
> [Personalmente, trato de evitar usar los métodos *_eval con argumentos
> String.]
>
> > porque usar send en los ejemplitos esos ?
>
> Lo que discuten en los comentarios es una manera de mejorar ésto, del
> post original:
>
> f = open("myfile")
> if f.stat.instance_eval{ readable? and writable? and size? and owned? }
> # work with file
> end
>
> O sea, ejecutar el if sólo si f.stat.readable?, f.stat.writable?,
> f.stat.size? y f.stat.owned? son verdaderos.
>
> Por ejemplo, uno de los comentarios:
>
> if %w{readable? writable? size? owned?}.all? { |m| f.stat.send(m) }
> # work with file...
> end
>
> usa Enumerable#all? [1], que retorna verdadero si el bloque evalúa
> verdadero para todos los miembros del array.
>
> En este caso, los miembros del array son nombres de métodos que se le
> envían a f.stat mediante Object#send
>
> Como bien dice uno de los que comentan en el post de _why:
> "...obfuscated enough to be interesting ;)"
>
> Saludos!
>
>
> [1] http://ruby-doc.org/core/classes/Enumerable.html#M003162
>
>
>
> --
> Manuel Aristarán <[EMAIL PROTECTED]>
> Web Development - http://jazzido.com
> Buenos Aires, Argentina
> _______________________________________________
> ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
--
Federico Brubacher
www.fbrubacher.com
Colonial Duty Free Shop
www.colonial.com.uy
--
Federico Brubacher
www.fbrubacher.com
Colonial Duty Free Shop
www.colonial.com.uy
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar