使い方
Railsから入った人へ【attr_accessor】って?
この記事で学ばせていただきました。
attr_accessorには2つの役割があり、
1.クラスの中にあるインスタンス変数を、クラスの外から変更できるようにするためのもの
2.インスタンス変数を戻り値として取ってきてくれるもの
です。
コードで書くと、
attr_accessor :name
と書いて利用します。
そうすると何が起こるかというと、
def name=(w)
@name = w
end
def name
@name
end
というコードが生成されたのと同じことになります。
1つ目のdef name=は@nameに好きな引数の値を入れることができる。
2つ目のdef nameは単に、@nameの中身を返してくれるものです。
大事なのはインスタンス変数に代入してくれるということです。
つまり。。。
def call_name
p @name
end
というコードを同一クラス内に書いても、きちんと動くということになります。
railsにもあるけど見えてないだけ
もちろんこれは、railsにもデフォルトで組み込まれてます。
ですが、わざわざ明示的に書くことがないので、rubyをちゃんと勉強して初めてわかる知識かと思います。
例えば、railsでbookクラスがあり、そのプロパティにnameがあるとして、、、
book = Book.new
book.name = "sample"
こんな感じで書くことができますよね。
これは、わざわざ書いてはいませんが、 attr_accessor :nameがデフォルトであるからできるんですよね。。。