Почему Ruby выставляет символы для конкретного вида использования? Разве это не вид оптимизации, это обычно обрабатывается интерпретатором/компилятором?
Отчасти проблема в том, что строки Ruby изменяемы. Поскольку каждая строка, которую выделяет Ruby, должна быть независимой (она не может кэшировать короткие / общие строки), удобно иметь тип Symbol
, чтобы позволить программисту иметь, по сути, неизменяемые строки с эффективным использованием памяти.
Кроме того, они имеют много общих характеристик с enum
, но с меньшей трудностью для программиста.
Символы Ruby используются вместо строковых констант в других подобных языках. Помимо преимущества в производительности, они могут использоваться для семантического различения между строковыми данными и более абстрактным символом. Будучи синтаксически разными, они могут быть четко различимы в коде.