経由self.attributeとによるインスタンス属性へのアクセスの違いを誰かが説明できます@attributeか?
回答:
self.attributeメソッドを呼び出しますattribute。
self.attribute = valueattribute=引数を指定してメソッドを呼び出しますvalue。
@attributeおよび@attribute = value/インスタンス変数の値を設定します@attribute。
つまり、基本的にはまったく異なる2つのものです。
ただし、呼び出すと、返すメソッドと設定するメソッドがattr_accessor :attribute定義されます。したがって、その場合、違いはありません。attribute@attributeattribute=(value)@attribute = value
「インスタンス変数に直接アクセスする方が、アクセサメソッドを使用してアクセスするよりも約2倍高速です」
https://www.greyblake.com/blog/2012-09-01-ruby-perfomance-tricks/をチェックしてください。
self.場合でも、(getter / setterメソッドを作成している場合を除いて)一般的に使用することをお勧めします。これにより、後でアクセサメソッドを変更して、インスタンス変数を取得/設定するだけではない場合に、追加のリファクタリング作業やバグから保護されます。(または、他の誰かがあなたの作品にパッチを当てたりサブクラス化したりした場合。)attr_accessor