yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

<DAY63>ruby ゲッターとセッターについて

\ Follow me!! /

f:id:yujiro0320:20190415152250p:plain

学習時間と累計時間

●学習日数  63日 

●学習時間(本日)   4.0時間

●累計学習時間  165.0時間

●一日あたりの平均学習時間  2.61時間 

この記事のまとめ

 ゲッターとは他のクラスでインスタンス変数の値を使用したい時に使うメゾットの事。 セッターとはインスタンス変数の値を書き換えるメソッドの事。 短縮系で覚える前に、定義の仕方を把握した方がイメージしやすい。

ゲッターとは

インスタンスインスタンス変数を返すだけのメゾットの事。 インスタンスが持っているインスタンス変数の情報を取得する事が出来る。

ゲッターを定義する事で何が変わるの?

ゲッターを定義する意味を把握するには以下の前提条件を理解しているかが重要である。

この表に記載している意味を理解しているかどうか?

f:id:yujiro0320:20190423112743p:plain
クラス変数とインスタンス変数の早見表

セッターとは?

インスタンス変数の値を変更できるようにする為のメソッド。

どういう時に使うの?

他のクラスのインスタンス変数の情報を使いたい時。

違うクラスに対して同じ値を与えてあげたい時にゲッターが必要だよと理解する。

class Dog
 
  #クラスメゾットを定義してみる
   def self.naku
   puts "犬はわんわん泣く。"
   end

  #インスタンスメゾットを定義してみる
  def dog_name(name)
  @name = name
  puts "#{name}"
  end

  #nameのゲッターを指定してみた
  def name
  return @name
  end

  #nameのセッターを指定してみた
  def name=(name)
  @name = name
  end
end

dog = Dog.new

#セッターメソッドを使って犬の名前を変えてみた
dog.name=("taro")

#ゲッターメソッドを使って犬の名前を出力してみた
puts dog.name

よく使うメゾットであり、インスタンスが増えると書くのが大変になる。 今は1のインスタンス変数なので、少ないが、3つになると9行も記載しないといけない。かなり面倒になる。 なので、以下のような短縮系がある。

class Dog
attr_accessor :name
end