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