www learn español codecademy code academy ruby binding

learn - codecademy ruby español



Encuadernación de Procs (2)

¿Es posible ejecutar un proceso dentro del contexto de otro objeto?

Sé que normalmente harías proc.call (foo), y luego el bloque debería definir un parámetro. Me preguntaba si podría hacer que "self" se vincule con foo para que no sea necesario tener un parámetro de bloqueo.

proc = Proc.new { self.hello } class Foo def hello puts "Hello!" end end foo = Foo.new # How can proc be executed within the context of foo # such that it outputs the string "Hello"? proc.call


foo.instance_eval &proc

instance_eval puede tomar un bloque en lugar de una cadena, y el operador & convierte el proceso en un bloque para usar con la llamada al método.


Esto es para ruby ​​1.9:

class MyCat def initialize(start, &block) @elsewhere = start define_singleton_method(:run_elsewhere, block) if block_given? end end MyCat.new(''Hello''){ @elsewehere << '' world'' }.run_elsewhere