トラック
/
Ruby
Ruby
/
シラバス
/
インスタンス変数
イン

インスタンス変数 の Ruby

7個の演習

インスタンス変数について

重要なポイント

  • クラスの.newメソッドを呼び出してオブジェクトのインスタンスを作成すると、インスタンスの状態を初期化するために、.initializeメソッドにすべての引数が渡されます。
  • インスタンス変数の名前には、先頭に@が付きます。
  • インスタンス変数は、明示的に値を設定するまで、デフォルトではnilです。
  • インスタンス変数はデフォルトではプライベートなので、ゲッターとセッターを使って操作するのがよいでしょう。
class Backpack
  initialize(owner)
    @owner = owner
  end

  def owner
    @owner
  end

  def owner=(new_owner)
    @owner = new_owner
  end
end
  • 名前の末尾に=が付いたメソッドは、Rubyによってセッターとして認識されます。また、代入構文をシンタックスシュガーとして使えるようになり、たとえばBackpack.new("Sven").owner = "Ayah"のように書けます。 ownerと=の間にはスペースがありますが、実際のメソッド名はowner=であることに注目してください。
  • ゲッターとセッターは、attr_reader、attr_writer、attr_accessorメソッドを使って作成できます。
    • attr_reader:指定したシンボルのゲッターを作成します
    • attr_writer:指定したシンボルのセッターを作成します
    • attr_accessor:指定したシンボルのゲッターとセッターを作成します
class Backpack
  attr_accessor :owner

  initialize(owner)
    @owner = owner
  end
end
  • インスタンス変数を直接使わずに、ゲッターとセッターを使うのはなぜでしょうか?
    • 前の例で@ownarのように打ち間違えると(これを「タイポ」と呼びます)、エラーは出ずにそのまま処理が進んでしまい、システムにバグを潜り込ませる可能性があります。
    • ゲッターとセッターを使うとこれが明示的になり、タイポをするとエラーが発生します

参考文献

オブジェクトのインスタンスの初期化

インスタンス変数

GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

インスタンス変数を学習する

練習はロックされています

インスタンス変数を練習するには、あと5個の演習のロックを解除してください