这是我的红宝石代码
class Demo
attr_accessor :lines
def initialize(lines)
self.lines = lines
end
end
Run Code Online (Sandbox Code Playgroud)
在上面的代码我可以使用
@lines = lines
Run Code Online (Sandbox Code Playgroud)
大多数情况下,我看到人们在初始化方法中使用@.在这两者中有没有一种首选方式?为什么?
mip*_*adi 41
使用时@lines
,您正在访问实例变量本身.self.lines
实际上是经历lines
了班级的方法; 同样,self.lines = x
通过这个lines=
方法.因此,@
当您想要直接访问变量时,以及self.
希望通过该方法访问时,请使用.
要直接回答您的问题,通常您希望直接在initialize
方法中设置实例变量,但这取决于您的用例.
self.lines
是一个方法,@lines
是实例变量.在你的构造函数中,你会想要使用self.lines,但我认为这是有争议的.这真的只是一种风格差异.如果您想深入讨论直接与间接变量访问,请阅读Kent Beck的Smalltalk最佳实践模式一章.