Effective Ruby: selfを書く場所

Effective Ruby

Effective Ruby

「項目8 サブクラスを初期化するときにはsuperを呼び出そう」は、そのまんまで 子クラスでinitializeメソッドを描く場合はoverrideされちゃうから、superを呼ぼうねという話でした(簡単なのでskip)。
以下本題。
 

項目9 Rubyの最悪に紛らわしい構文に注意しよう

これは、Ruby初心者なら誰しも引っ掛かる話ですね。

class Name
  attr_accessor(:first, :last)

  def initialize(first, last)
    # ここは必要
    self.first = first
    self.last = last
  end

  def full
    # ここは不要
    first + " " + last
  end
end

覚えておくべき事項

  • セッターメソッドは、明示的にレシーバを指定しなければ呼び出せない。レシーバがなければ、変数の代入と解釈されてしまう。
  • インスタンスメソッドからセッターメソッドを呼び出すときには、レシーバとしてselfを使う
  • セッター以外のメソッドを呼び出すときには、明示的にレシーバを指定する必要はない、selfでコードを汚さないようにしよう。