Ruby中有实例变量的四个不同的getter和setter方法,attr,attr_reader,attr_writer,和attr_accessor.问题是,在Ruby中attr :dilithium,attr_reader :dilithium与attr_accessor :dilithium是否相同,如果传递了另外一个参数true则相同?也就是说
class Enterprise
attr :dilithium, true
Run Code Online (Sandbox Code Playgroud)
相同
class Enterprise
attr_accessor :dilithium
Run Code Online (Sandbox Code Playgroud)
有两个功能attr,并attr_accessor或多或少的冗余?
在Ruby 1.8中,attr只能定义一个属性,可选择true创建一个setter.在1.9中,它表现得像attr_reader:它允许多个属性.正如@Linuxios所说,不推荐使用可选的布尔值.