Ruby从另一个方法访问实例变量

时间:2017-02-07 15:50:26

标签: ruby

我有一个类,我尝试访问一个实例变量,我注意到我可以通过@解决它并且没有它来以两种方式完成它。为什么我在没有@ puts "name : #{name}"的情况下调用它时没有错误?

class Blabla
    attr_accessor :name

    def initialize(blabla)
        @name = blabla
    end

    def populate()
        puts "name : #{name}"
        puts "name : #{@name}"
    end

end

1 个答案:

答案 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_readerattr_writer方法。