Можно ли везде использовать строки и никогда не использовать символы в Ruby on Rails? - PullRequest
2 голосов
/ 26 июля 2010

Есть некоторые неудобства с использованием символов в хешах.Например, гем JSON, который мы используем, всегда возвращает строки из любой проанализированной строки JSON, поэтому, где бы мы ни ссылались на хеш, сгенерированный при декодировании JSON, мы должны использовать комбинацию строк и символов для доступа к хешам.

По стилю, нормально ли поддерживать единообразие, используя только строки?

Ответы [ 3 ]

3 голосов
/ 26 июля 2010

Строки являются изменяемыми, поэтому каждый раз, когда вы ссылаетесь "foo" ruby ​​создает новый объект. Вы можете проверить это, позвонив "foo".object_id в irb. С другой стороны, символы - нет, поэтому каждый раз, когда вы ссылаетесь на :foo, ruby ​​возвращает один и тот же объект.

Что касается "стиля" и "последовательности", вы всегда можете использовать hash.symbolize_keys! для полученных вами данных json, это превратит все строковые ключи в символы. И наоборот - hash.stringify_keys! чтобы снова сделать их строками.

0 голосов
/ 27 июля 2010

Для нерешительных среди нас:

http://as.rubyonrails.org/classes/HashWithIndifferentAccess.html

0 голосов
/ 26 июля 2010

Нет правила, согласно которому ключ хеша должен быть символом.

Символ в виде ключа часто встречается в Rails как соглашение ... Rails широко использует передачу хэшей для разрешения нескольких параметров, и ключи в таких хэшах часто являются символами, указывающими на то, что они ожидаемы. / допустимые параметры для вызова метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...