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所说,不推荐使用可选的布尔值.