Ruby セッター

rubyは=で終わるメソッドを定義すると、変数に代入するような形でそのメソッドを呼び出せる。別のクラスから、インスタンス変数の中身を更新するために使う感じ。これがセッター。

class Hoge

  def initialize

    @movies = []

  end

  def movies=(movies)

    @movies = movies

  end

end

 

class Foo(hoge)

  hoge.movies = [”タイタニック", "7人の侍", "もののけ姫"]

end

 

これは普通の代入ではなくてmovies=メソッドで@moviesの値を更新している感じ。

initializeで生成された時点では空の配列だった@moviesをFooクラスの方で値を代入してあげてる感じ。Hogeの方で自分のインスタンス更新してあげるメソッドを定義しといて、クラスの外で代入できるようにしてるって感じ。

直感的に普通の代入と見た目似てるから代入されてるのはなんとなくわかると思うけど、普通の変数定義や代入だったら

 

 変数名 = 値

 

で、セッターメソッドを使うと

 

インスタンス.セッターメソッド = 値

 

って感じになるから区別してないと混乱するかもね