gpt4 book ai didi

Ruby 实例评估

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:52 26 4
gpt4 key购买 nike

class Setter
attr_accessor :foo

def initialize
@foo = "It aint easy being cheesy!"
end

def set
self.instance_eval { yield if block_given? }
end
end

options = Setter.new

# Works
options.instance_eval do
p foo
end

# Fails
options.set do
p foo
end

为什么“设置”方法会失败?

编辑

想通了...

def set
self.instance_eval { yield if block_given? }
end

需要:

def set(&blk)
instance_eval(&blk)
end

最佳答案

是的 - yield 在定义它的上下文中计算。

写得好here , 但一个简单的例子说明了问题:

>> foo = "wrong foo"
>> options.set do
?> p foo
>> end
"wrong foo"

关于Ruby 实例评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917338/

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