Каждый пример attr_accessor
, который я видел, использует символ (:var
) в качестве переменной.
Является ли это требованием использования attr_accessor
и если да, то почему? Если нет, то почему это такая распространенная практика?
Каждый пример attr_accessor
, который я видел, использует символ (:var
) в качестве переменной.
Является ли это требованием использования attr_accessor
и если да, то почему? Если нет, то почему это такая распространенная практика?
attr_accessor(символ, ...) → ноль
attr_accessor(string, ...) → nil (появилось в Ruby 2.1)
Определяет именованный атрибут для этого модуля, где имя — symbol.id2name, создавая переменную экземпляра (@name) и соответствующий метод доступа для его чтения. Также создает метод name= для установки атрибута. Строковые аргументы преобразуются в символы.
Является ли это требованием использования attr_accessor?
Нет, вам разрешено использовать как символы, так и строки.
Прочитайте это - Понимание символа Ruby как вызова метода
Хотя текущая версия ruby (2.1) разрешает передачу строки (как упоминал @ArupRakshit), более старые версии ruby не выполнял (2.0 и более ранние версии). Таким образом, любой код, который не использует ruby 2.1 (а это почти все), должен будет передавать символы.
Помимо этого, в большинстве случаев вы все равно захотите передавать символы, поскольку они являются атомарными, имеют меньше накладных расходов и семантически больше соответствуют определению атрибута, чем строки.