LoginSignup
0
0

More than 1 year has passed since last update.

【Ruby】アクセサメソッドを理解する

Last updated at Posted at 2021-06-13

はじめに

プログラミング初心者です。
知識があやふやだったアクセサメソッドについて学習しましたので、備忘録として投稿します。
間違い等ございましたら、ご指摘お願いします。

用語の定義

アクセサメソッド

ゲッターメソッドやセッターメソッドなどインスタンス変数の読み取りや書き込みができるメソッドの総称

ゲッターメソッド

インスタンス変数の読み取り専用のインスタンスメソッドのこと

セッターメソッド

インスタンス変数の書き込み専用のインスタンスメソッドのこと
※メソッド名の末尾に=(イコールをつけると)、代入式のようにメソッドを呼び出すことが出来る

class Car
    def initialize
        puts "車の色を入力してください"
        @color = gets.chomp
    end

    # ゲッター(読み取り)
    def color
        @color
    end

    # セッター(書き込み)
    def color = (set)
        @color = set
    end
end

car = Car.new
# ※initializeメソッドでredと入力したとする

# ゲッターでインスタンスメソッドの値を確認
puts car.color 
# => red

# セッターを使用し、インスタンスメソッドの値を書き換える
car.color = "white"

# 再びゲッターでインスタンスメソッドの値を確認
puts car.color
# => white

アクセサメソッドの必要性

クラスの外部からインスタンスの値を変更しようとすると、エラーが発生する
→エラーが発生しないようにするためにはインスタンスメソッドを経由する必要がある
→そこで使用するのがアクセサメソッド

簡単な記述方法

ゲッターとセッターには、簡単に記述する方法がある。

# ゲッター
    attr_reader :インスタンス変数名  # シンボル型
    attr_reader "インスタンス変数名" # 文字列型

# セッター
    attr_writer :インスタンス変数名  # シンボル型
    attr_writer "インスタンス変数名" # 文字列型

# ゲッター+セッター
    attr_accessor :インスタンス変数名  # シンボル型
    attr_accessor "インスタンス変数名" # 文字列型

attr_readerは、ゲッターメソッドを定義してくれるメソッド
attr_writerは、セッターメソッドを定義してくれるメソッド
attr_accessorは、ゲッターメソッドとセッターメソッドの両方を定義してくれるメソッド

まとめ

あやふやだったアクセサメソッドについて、整理できたかなと思います。
実装経験が少ないため、attr_accessorの出番は少ないですが、これから有益な情報を入手しましたら発信して行きたいと考えております!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0