我认为可以像这样在特征类中定义 attr_accessor 方法:
class IOS
@@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths
但这没有任何回报。
有没有办法做到这一点?
我认为可以像这样在特征类中定义 attr_accessor 方法:
class IOS
@@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths
但这没有任何回报。
有没有办法做到这一点?
您添加到类中的attr_accessor
使用类级别的实例变量,而不是类变量。在某些情况下,这实际上会更有帮助,因为当继承进入图片时,类变量会变得很荒谬。
class IOS
@modules_paths = "hello"
class << self
attr_accessor :modules_paths
end
end
puts IOS::modules_paths # outputs "hello"
如果你真的需要它使用类变量,你可以手动定义方法,拉入 ActiveSupport 并使用cattr_accessor
,或者只是复制相关的 ActiveSupport 方法。
您永远不会调用IOS::modules_paths=
setter 方法,也不会在任何地方分配给相应的@modules_paths
实例变量。因此,@modules_paths
是未初始化的,因此IOS.modules_paths
返回一个未初始化的变量。在 Ruby 中,未初始化的变量计算为什么nil
也不puts nil
打印。