0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ゲッターとセッターについて

Posted at

1.ゲッターとは

ゲッターとは,インスタンス変数をクラス内から参照するメソッドのことをいう。
以下のようなコードにおいて、本来Rubyではインスタンス変数の値はクラス内からでしか取得することはできない。

class Movie
  def initialize(name)
    @name = name
  end
end

obj1 = Movie.new('Forrest Gump')

p obj1.name #=>undefined method `name' for #<Movie:0x00007fd4558526f0 @name="Forrest Gump">

そこで、それを可能にするため、クラス内にインスタンス変数を参照する専用のメソッド「ゲッター」を定義する。

class Movie
  def initialize(name)
    @name = name
  end

  def getName #「ゲッター」
    @name
  end
end

obj1 = Movie.new('Forrest Gump')

p obj1.getName #=> 'Forrest Gump'

2.セッターとは

セッターとは、インスタンス変数をクラス内で更新するメソッドのことをいう。
以下のようなコードにおいて、セッターにおいてもインスタンス変数の更新もクラス内でしかでない。

class Movie
  def initialize(name)
    @name = name
  end
end

obj1 = Movie.new('Forrest Gump')

p obj1.name = 'Fight Club' #=>undefined method `name=' for #<Movie:0x00007ffd4a83b400 @name="Forrest Gump"> (NoMethodError)

そこで、それを可能にするため、クラス内にインスタンス変数の内容を更新する専用のメソッド「セッター」を定義する。


class Movie
  def initialize(name)
    @name = name
  end

  def changeName=(name) #「セッター」
    @name = name
  end
end

obj1 = Movie.new('Forrest Gump')
obj1.changeName = 'Fight Club'
p obj1.getName #=> 'Fight Club

この時、セッターの定義において、
メソッド名の右側に「=()」が必要となる。
 
                           以上

0
0
2

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?