2017-06-05 5 views
1

Rubyでクラス変数を参照する最良の方法は何ですか?ここでRuby self.nameまたは@name

は私が作ったクラスです。

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とself.variableを使うのですか?

+0

2番目のメソッドに 'self.'は必要ありません。割り当てようとしていなければ、' name'だけでもかまいません。 –

+0

上記のコードにはクラス変数はありません。 – sawa

答えて

1

attr_accessor :nameはちょうど@name変数を返すメソッドname、代わりにあなたの

def name 
    @name 
end 

のようなものを作成します。

attr_accessorなしself.namenameの両方が機能しなくなり、NoMethodErrorを返します。 @nameはすべての場合に機能します。

関連する問題