classでよく見かけるこいつら、整理してみた
①attr_accessorを利用した場合
attr_accessor :name
def initialize(name)
@name = name
end
#----略----
②「@」を用いたインスタンス変数を用いる場合
def initialize(name)
@name = name
end
#----略----
def name
@name
end
def name=(val)
@name = val
end
①と②は同じ意味である。
ちなみにdef name=(val) とは
インスタンス名.name = "hogehoge"
のように、インスタンス変数nameへの代入式を書いた時に呼び出されるメソッド。
そもそもattr_accessorとは
getterとsetterを同時に定義してくれている。
(getter、setterについてはこちらの記事をみた。↓)
https://kossy-web-engineer.hatenablog.com/entry/2018/10/01/194217
つまりこのメソッドを使わずに再現しようとすると②のようになる。
Railsでもかなり重要な部類なのでインスタンス周りは丁寧に理解していきたい。