2009/11/2 Nicolás Sanguinetti <[email protected]>

>  Además de que no es ruby valido. No podés usar {} para definir clases
> o métodos (no directamente, o sea, podés usar eso en Class.new o
> define_method porque reciben un bloque, pero las keywords class y def
> no reciben un bloque.
>
> Además, abrir una clase y definir cosas, no devuelve la clase:
>
> (class Integer; end) #=> nil
>
> Como todo en ruby, eso de vuelve la última linea del bloque de código.
>
> En todo caso, tendrías que hacer (class Integer; blah blah; self; end)
> para que devuelva la clase.
>
> Y ta, tampoco podés hacer Integer.new(400). Podés hacer Integer(400),
> porque hay un método definido en Kernel que se llama igual que la
> clase. Para llegar a ese método desde la clase, lo único que se me
> ocurre es method(Integer.name).call(400).
>
> Que tá, es chancho, pero meh, a esta altura ya no estamos pensando en eso.
>
> O sea que quedaría en algo como:
>
>
> a,b=method(Integer.class_eval{define_method(:masigual){|*args|args.map{|n|n+=self}}&&self}.name).call(400).masigual(a,b)
>
> …pero sigue teniendo variables locales :P
>

GANASTE FOCA, GANASTE =D
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a