让我们考虑以下代码:
class Try
CONST = xxx("42")
private_class_method def self.xxx(str)
str.to_i
end
end
puts Try::CONST
它产生一个错误: undefined method `xxx' for Try:Class (NoMethodError)
看来我不能使用类私有方法来初始化常量。该示例实际上是在做nothig,但这是我尝试从文件中将数据读取到类常量中时遇到的错误的再现。
是因为ruby在了解所有方法之前尝试初始化一个常量,还是我做错了什么?
并不是的。您不能做的就是将尚未定义的内容的值分配给其他内容,以保留其值。
它与方法可见性无关,因为这可行:
class Try
private_class_method def self.xxx(str)
str.to_i
end
CONST = xxx("42")
end
p Try::CONST
# 42
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句