kno*_*opx 4 ruby singleton var initialization
Foo.val回来nil而不是"foo"在打电话之前Foo.set?@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"
Run Code Online (Sandbox Code Playgroud)您可以@val像这样在Foo中初始化:
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"
Run Code Online (Sandbox Code Playgroud)
你的代码@val不是在Foo上初始化,而是在Foo的元类上初始化
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |