gpt4 book ai didi

Ruby 元编程 : Initialize singleton_class variable

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:42 30 4
gpt4 key购买 nike

  • 为什么 Foo.val 在调用 Foo.set 之前返回 nil 而不是 "foo"
  • 是否有任何机制可以在类评估时初始化 @val
  • @val = "foo" 存储在哪个范围内?

    class Foo
    class << self
    @val = "foo"
    attr_reader :val

    def set(val)
    @val = val
    end
    end
    end

    p Foo.val # nil
    Foo.set("bar")
    p Foo.val # "bar"

最佳答案

您可以像这样在 Foo 中初始化 @val:

class Foo
@val = "foo"
class << self
attr_reader :val

def set(val)
@val = val
end
end
end

p Foo.val #=> "foo"
Foo.set("bar")
p Foo.val #=> "bar"

您的代码不是在 Foo 上而是在 Foo 的元类上初始化 @val

关于Ruby 元编程 : Initialize singleton_class variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968333/

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