是否可以在另一个对象的上下文中执行proc?
我知道通常你会做proc.call(foo),然后块应该定义一个参数。我想知道我是否可以“自我”绑定到foo,这样就没有必要有一个块参数。
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
答案 0 :(得分:44)
foo.instance_eval &proc
instance_eval
可以取块而不是字符串,&
运算符将proc转换为块以供方法调用使用。
答案 1 :(得分:0)
这是红宝石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