Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #encoding: utf-8
- #R-19_self
- class SayHelloMyName
- # アクセスメソッドを指定すると、勝手にメソッドを設定してくれるっぽい。
- attr_accessor :name
- def initialize(my_name = "Ruby")
- @name = my_name
- end
- def greet
- # インスタンスメソッドの中で、メソッドのレシーバ自身を参照する
- # メソッドの内部で他のメソッドを呼び出す場合につける。→なので省略可能
- puts "Hello, I am #{self.name}"
- # レシーバを省略してメソッドを呼ぶと、暗黙的にselfをレシーバとする
- puts "#{name}!"
- end
- def change_name(change_name)
- # セッターメソッドを呼び出したい場合はselfを明示する。
- # セッターメソッド(この場合name=)は、そのままだと代入の方として解釈されるため。→ローカル変数nameに代入されることになってしまう。
- # 今回の場合はインスタンス変数を変更したいので、selfを使ってセッターメソッドを呼び出している
- self.name = change_name
- end
- end
- tarou = SayHelloMyName.new("tarou")
- tarou.greet
- tarou.change_name("test")
- tarou.greet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement