我认为在这样的特征类中定义attr_accessor方法是可能的:
class IOS
@@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths
但这没有任何回报。
有办法吗?
答案 0 :(得分:6)
您添加到类中的attr_accessor
使用类级实例变量,而不是类变量。在某些情况下,这实际上可能更有帮助,因为当继承进入图片时类变量会变得荒谬。
class IOS
@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths # outputs "hello"
如果您真的需要它来使用类变量,您可以手动定义方法,引入ActiveSupport并使用cattr_accessor
,或只使用copy the relevant ActiveSupport methods。
答案 1 :(得分:1)
您永远不会调用IOS::modules_paths=
setter方法,也不会在任何地方分配相应的@modules_paths
实例变量。因此,@modules_paths
被酉化,因此IOS.modules_paths
返回一个酉变量。在Ruby中,未初始化的变量计算为nil
,puts nil
不打印任何内容。