Может ли кто-нибудь объяснить разницу между доступом к атрибуту экземпляра через 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/