Каково различие между строкой и символом в Ruby?

Каково различие между строкой и символом в Ruby и когда я должен использовать один по другому?

60
задан the Tin Man 9 July 2019 в 23:02
поделиться

5 ответов

Основное различие - то, что несколько символов, представляющих единственное значение, идентичны, тогда как это не верно со строками. Например:

irb(main):007:0> :test.object_id
=> 83618
irb(main):008:0> :test.object_id
=> 83618
irb(main):009:0> :test.object_id
=> 83618

3 ссылки на символ: тест, весь одинаковый объект.

irb(main):010:0> "test".object_id
=> -605770378
irb(main):011:0> "test".object_id
=> -605779298
irb(main):012:0> "test".object_id
=> -605784948

3 ссылки на строку "тест", все различные объекты.

Это означает, что использование символов может потенциально сохранить хороший бит памяти в зависимости от приложения. Это также быстрее для сравнения символов для равенства, так как они - тот же объект, сравнение идентичных строк намного медленнее, так как строковые значения должны быть сравнены вместо просто идентификаторов объектов.

До, когда использовать, для которого, я обычно использую строки почти все кроме вещей как ключи хеша, где я действительно хочу уникальный идентификатор, не строку.

76
ответ дан the Tin Man 24 November 2019 в 17:49
поделиться

Как контрапункт, мой друг недавно записал сообщение, названное "Напыщенная речь Ruby" , который дает другой взгляд на символы Ruby.

0
ответ дан Greg Hewgill 4 July 2019 в 22:03
поделиться

Дополнительное различие между String и Symbol - то, что String имеет намного больше методов на нем для обработки строк, в то время как Symbol относительно минимизированный объект.

Выезд документация для String класс и Symbol класс .

3
ответ дан Grant Hutchins 24 November 2019 в 17:49
поделиться

Символ - что-то, что Вы используете для представления имен и строк. Вы хотели бы использовать символ, когда у Вас может быть потребность использовать строку, вдвое более настолько далеко легче и более продуктивную.

И просто найденный этим через Google, который может предложить большую деталь: Здесь Вы идете

0
ответ дан websch01ar 24 November 2019 в 17:49
поделиться

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

0
ответ дан Codebeef 24 November 2019 в 17:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: