rubyのselfは何が言いたいのかわからない。
selfはメソッドの中で呼び出すと、メソッドを実行している、インスタンス自身となり、それはtomになります。tomのことをレシーバーといいます。tomにはUser.new('tom')というインスタンスが代入されいて、最終的にはselfはUser.newを指していることだと思います。
つまりは 「def initialize(name)メソッドはインスタンス変数を保持しており、.nameメソッドでアクセサを参照し保持されたインスタンス変数を見にいくから、
hi I am tomになる」ということで宜しいでしょうか?
class User
attr_accessor :name
def initialize(name)
@name = name
end
def sayHi
self #self.nameがわからない
puts "hi I am #{self.name}"#なぜself.nameでtomに?
end
end
tom = User new("tom")
tom.sayHi
分かったこと
- p self → User:0x00000000057c4098 @name="tom"
インスタンス変数を自動的に見ている。 - 1.の結果からselfはオブジェクトを見ている。