gpt4 book ai didi

ruby - 了解简单的 `instance_eval` 示例

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:35 24 4
gpt4 key购买 nike

看着这个instance_eval示例:

class KlassWithSecret
def initialize
@secret = 99
end
def get
@secret
end
end
k = KlassWithSecret.new
k.instance_eval { @secret }
print k.get

我在 KlassWithSecret 中添加了一个 get 方法。

程序运行结果如下:

>ruby InstanceEvalTest.rb
99

那么,instance_eval 是否以某种方式调用了 initialize 方法?

我认为通过阅读这个有用的 post 我对这个方法有点理解了.但我还是一头雾水。

最佳答案

initialize 方法在 new 方法被调用后由 Ruby 自动调用。 instance_eval 运行您在对象的上下文 中提供的 block 。这意味着它可以访问 KlassWithSecret 类中的普通代码行可以访问的任何内容。

@secret 是一个实例变量,意味着它属于KlassWithSecret 的一个实例。因为我们在 KlassWithSecret 实例的上下文中评估 { @secret },所以我们可以访问 @secret

关于ruby - 了解简单的 `instance_eval` 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27209576/

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