Ruby元编程:初始化singleton_class变量
发布时间:2020-12-17 04:04:13 所属栏目:百科 来源:网络整理
导读:为什么Foo.val在调用Foo.set之前返回nil而不是“foo”? 在课堂评估中是否有任何初始化@val的机制? @val =“foo”存放在哪个范围内? class Foo class self @val = "foo" attr_reader :val def set(val) @val = val end endendp Foo.val # nilFoo.set("bar"
>为什么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上初始化@val,而是在Foo的元类上初始化 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |