【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を中心に「なんとなくの理解で使っているもの」を取り上げて解説しています。そのほかの記事もぜひご覧ください。
ほかの記事
Twitterもやってますので、フォローしていただけたらうれしいです。 卓球、心理学、哲学、Webサービス、好きな音楽、カメラ、登山、ランニング、読んだ本など何でもつぶやいてます。 https://twitter.com/atsushi101011