Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #encoding: utf-8
  2. #R-19_self
  3.  
  4. class SayHelloMyName
  5. # アクセスメソッドを指定すると、勝手にメソッドを設定してくれるっぽい。
  6. attr_accessor :name
  7. def initialize(my_name = "Ruby")
  8. @name = my_name
  9. end
  10.  
  11. def greet
  12. # インスタンスメソッドの中で、メソッドのレシーバ自身を参照する
  13. # メソッドの内部で他のメソッドを呼び出す場合につける。→なので省略可能
  14. puts "Hello, I am #{self.name}"
  15. # レシーバを省略してメソッドを呼ぶと、暗黙的にselfをレシーバとする
  16. puts "#{name}!"
  17. end
  18.  
  19. def change_name(change_name)
  20. # セッターメソッドを呼び出したい場合はselfを明示する。
  21. # セッターメソッド(この場合name=)は、そのままだと代入の方として解釈されるため。→ローカル変数nameに代入されることになってしまう。
  22. # 今回の場合はインスタンス変数を変更したいので、selfを使ってセッターメソッドを呼び出している
  23. self.name = change_name
  24. end
  25. end
  26.  
  27. tarou = SayHelloMyName.new("tarou")
  28. tarou.greet
  29. tarou.change_name("test")
  30. tarou.greet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement