gpt4 book ai didi

ruby - 使用 Proc#call 时为自己提供值(value)

转载 作者:数据小太阳 更新时间:2023-10-29 06:29:35 25 4
gpt4 key购买 nike

在 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 的实例, 这是 self 的值在我调用 $p 的代码中.

在 Javascript 中,我只是将我想成为“被调用者”的对象作为第一个参数传递给 call。 . Ruby 中是否有这样的功能,允许我设置任意对象,或者至少设置当前值 self , 作为 self 的新值当我调用 Proc

最佳答案

您正在寻找 instance_eval,它在调用对象的上下文中计算 lambda。

>> $p = proc { self }
=> #<Proc:0x95cece4@(irb):1 (lambda)>
>> class Dummy
>> def test
>> $p.call
>> end
>>
>> def test1
>> instance_eval(&$p)
>> end
>> end

>> d = Dummy.new
=> #<Dummy:0x946f7c8>
>> d.test
=> main
>> d.test1
=> #<Dummy:0x946f7c8>

关于ruby - 使用 Proc#call 时为自己提供值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1728900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com