【发布时间】:2014-12-02 06:44:35
【问题描述】:
在 Ruby 中使用 Proc#call 调用 lambda 函数时,self 总是以定义函数时的值结束,而不是调用函数时的值,例如:
$p = lambda { self }
class Dummy
def test
$p.call
end
end
d = Dummy.new
> d.test
=> main
调用test 返回main,而我打算返回的是#<Dummy:0xf794> - Dummy 的一个实例,这是我调用@987654328 的代码中self 的值@。
在 Javascript 中,我只需将我想成为“被调用者”的对象作为第一个参数传递给 call。 Ruby 中是否有任何此类功能,允许我在调用Proc 时将任意对象或至少self 的当前值设置为self 的新值?
【问题讨论】:
-
我原以为
$p.bind(some_object)可能会起作用,但显然bind只能与UnboundMethod对象一起使用。可以将 proc 强制转换为 unboundMethod 吗?
标签: ruby