Ruby self.name或@name

时间:2017-06-05 23:38:42

标签: ruby

我有一个问题是在Ruby中引用类变量的最佳方法是什么。

这是我上过的课程:

class Person
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def say_name
    puts @name
  end

  def say_name2
    puts self.name
  end

end

bob = Person.new("Bob")

bob.say_name 
=> "Bob"

bob.say_name2
=> "Bob"

" say_name"方法似乎按预期工作。为什么要使用@variable vs self.variable ??

1 个答案:

答案 0 :(得分:1)

attr_accessor :name只创建方法name,返回@name变量,类似

def name
  @name
end

而不是你。

如果没有attr_accessor,则self.namename将无法正常工作并返回NoMethodError@name适用于所有情况。