ATSU Tech Blog

Ruby on Rails, Pythonなどの記事を書いています。

【Ruby】「ゲッター」と「セッター」とはなんぞや?

Rubyにおける「ゲッター」と「セッター」について解説します。 インスタンス変数を使用するときに出てくるキーワードですね。

「ゲッター」は、インスタンス変数をクラス内から参照するメソッド

ゲッターとは、インスタンス変数をクラス内から参照するメソッドです。コード例は以下のようになります。

Class User
  def name
    @name 
  end
end

クラス内にメソッドを作ったあと、user.nameを使えるかというと、以下のようにエラーになってしまいます。

> user = User.new("Tom") 
=> #<User:0x00007fd88d1074e0 @name="Tom">
>user.name
=> NoMethodError (undefined method `name' for #<User:0x00007fd88e0707b0 @name="Tom">)

インスタンス変数を参照することはできますが、値がまだ入っていないからですね。こちらのエラーを解消するために、セッターを使っていきます。

「セッター」は、インスタンス変数に値を代入するメソッド

インスタンス変数に値を代入するメソッドを「セッター」と言います。コード例は以下です。

Class User
  def name=(name) #セッター
    @name = name
  end

  def name #ゲッター
    @name 
  end
end

先程のエラーは、nameメソッドに対してエラーが出ていましたが、今回はどうでしょうか。

>user = User.new("Tom")
=> #<User:0x00007fd88d1074e0 @name="Tom">
>user.name
=> "Tom"

ゲッターとセッター両方を使うことで、インスタンス変数を使えることができました。インスタンス変数は、参照して値を代入して使うことができます。

3種類のアクセスメソッドを使って、「ゲッター」や「セッター」を簡単に定義する

  • attr_reader(ゲッター)

  • attr_writer(セッター)

  • attr_accessor(ゲッターとセッター)

ゲッターやセッターを定義するために、3種類のアクセスメソッドというものが用意されています。今回は「ゲッター」と「セッター」についての記事なので割愛しますが、ぜひ使い方を調べてみてください。



この記事の説明がわかりやすかった!ここ間違ってるよ!次こんな記事を書いて欲しい!などあればコメント、DMよろしくお願いします。LGTMもぜひ。 Ruby on Railsを中心に「なんとなくの理解で使っているもの」を取り上げて解説しています。そのほかの記事もぜひご覧ください。

ほかの記事

  1. Rubyのハッシュとシンボル、キーの関係について、わかりやすく解説する

  2. Rubyにおける「クラス」と「オブジェクト」の関係について分かりやすく解説してみる

  3. nilガードの書き方と、使用するメリットについて

Twitterもやってますので、フォローしていただけたらうれしいです。 卓球、心理学、哲学、Webサービス、好きな音楽、カメラ、登山、ランニング、読んだ本など何でもつぶやいてます。 https://twitter.com/atsushi101011