LoginSignup
0
0

More than 5 years have passed since last update.

attr_accessorについて

Posted at

使い方

Railsから入った人へ【attr_accessor】って?
この記事で学ばせていただきました。

attr_accessorには2つの役割があり、

1.クラスの中にあるインスタンス変数を、クラスの外から変更できるようにするためのもの
2.インスタンス変数を戻り値として取ってきてくれるもの
です。

コードで書くと、

ruby.rb
attr_accessor :name

と書いて利用します。

そうすると何が起こるかというと、

ruby.rb

def name=(w)
 @name = w
end

def name 
 @name 
end

というコードが生成されたのと同じことになります。
1つ目のdef name=は@nameに好きな引数の値を入れることができる。
2つ目のdef nameは単に、@nameの中身を返してくれるものです。
大事なのはインスタンス変数に代入してくれるということです。
つまり。。。

ruby.rb

def call_name
 p @name
end

というコードを同一クラス内に書いても、きちんと動くということになります。

railsにもあるけど見えてないだけ

もちろんこれは、railsにもデフォルトで組み込まれてます。
ですが、わざわざ明示的に書くことがないので、rubyをちゃんと勉強して初めてわかる知識かと思います。

例えば、railsでbookクラスがあり、そのプロパティにnameがあるとして、、、

ruby.rb
book = Book.new
book.name = "sample"

こんな感じで書くことができますよね。
これは、わざわざ書いてはいませんが、 attr_accessor :nameがデフォルトであるからできるんですよね。。。

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