Может ли кто-нибудь объяснить разницу между доступом к атрибуту экземпляра через self.attribute
и @attribute
?
Прямой доступ к переменной экземпляра vs. Использование метода доступа
Ответ 1
self.attribute
вызывает метод attribute
. self.attribute = value
вызывает метод attribute=
с аргументом value
. @attribute
и @attribute = value
получить/установить значение переменной экземпляра @attribute
.
Итак, в основном это две совершенно разные вещи.
Однако, если вы вызываете attr_accessor :attribute
, он определяет метод attribute
для возврата @attribute
и метода attribute=(value)
для установки @attribute = value
. Поэтому в этом случае нет разницы.
Ответ 2
"Доступ к переменной экземпляра напрямую примерно в два раза быстрее, чем доступ к ним с помощью методов доступа"
Проверьте: http://greyblake.com/blog/2012/09/02/ruby-perfomance-tricks/