self.attribute
を介したインスタンス属性へのアクセスと@attribute
によるインスタンス属性へのアクセスの違いを誰かが説明できますか?
_self.attribute
_はメソッドattribute
を呼び出します。
_self.attribute = value
_は、引数_value
を指定してメソッド_attribute=
_を呼び出します。
_@attribute
_および_@attribute = value
_は、インスタンス変数_@attribute
_の値を取得/設定します。
つまり、基本的には2つのまったく異なるものです。
ただし、_attr_accessor :attribute
_を呼び出すと、_@attribute
_を返すメソッドattribute
と_@attribute = value
_を設定するメソッドattribute=(value)
が定義されます。その場合、違いはありません。
「インスタンス変数に直接アクセスする方が、アクセサーメソッドでインスタンス変数にアクセスするよりも約2倍高速です」
チェックしてください: http://greyblake.com/blog/2012/09/02/Ruby-perfomance-tricks/