我的googlefu很糟糕,无法找到相关信息。
基本上我想要一个只在类/模块范围内可见的实例变量,但也是不可变的。
我是Ruby新手并且如果这个问题没有多大意义,请道歉。
答案 0 :(得分:3)
class MyClass
def initialize
class << self
FOO=1
end
end
def foo
class << self
FOO
end
end
end
当然,您希望尽可能使用方法foo
来读取值。
更简单的等价物是
class MyClass
def initialize
def foo; 1; end
end
end
答案 1 :(得分:1)
Ruby常量不是很常量:它们不是不可变的,你可以为它们分配另一个值,你得到的只是一个警告。请参阅问题Constant Assigment Bug in Ruby?
答案 2 :(得分:0)
我为这个案子写了一个宝石。 http://rubygems.org/gems/instancevalue
(接近Ken的那个。)