我有一个类,我尝试访问一个实例变量,我注意到我可以通过@
解决它并且没有它来以两种方式完成它。为什么我在没有@
puts "name : #{name}"
的情况下调用它时没有错误?
class Blabla
attr_accessor :name
def initialize(blabla)
@name = blabla
end
def populate()
puts "name : #{name}"
puts "name : #{@name}"
end
end
答案 0 :(得分:3)
正如评论中所暗示的那样:
attr_accessor :name
是:
的简写def name
@name
end
def name=(name)
@name = name
end
扩展我们的代码:
class Blabla
def name
@name
end
def name=(name)
@name = name
end
def initialize(blabla)
@name = blabla
end
def populate()
puts "name : #{name}"
puts "name : #{@name}"
end
end
#{name}
引用返回name
的方法@name
。
#{@name}
直接引用@name
。
另请务必了解attr_reader
,attr_writer
方法。