Я совершенно новичок в мире Ruby, и меня немного смущает концепция символов. В чем разница между символами и переменными? Почему бы просто не использовать переменные?
Благодарю.
Я совершенно новичок в мире Ruby, и меня немного смущает концепция символов. В чем разница между символами и переменными? Почему бы просто не использовать переменные?
Благодарю.
Ответы:
Переменные и символы - это разные вещи. Переменная указывает на различные виды данных. В Ruby символ больше похож на строку, чем на переменную.
В Ruby строка изменчива, а символ неизменен. Это означает, что необходимо создать только одну копию символа. Таким образом, если у вас есть
x = :my_str
y = :my_str
:my_str
будет создан только один раз x
и y
указывает на ту же область памяти. С другой стороны, если у вас есть
x = "my_str"
y = "my_str"
строка , содержащая my_str
будет создана в два раза , а x
и y
будет указывать на различные инстанции.
В результате символы часто используются в качестве эквивалента перечислений в Ruby, а также ключей от словаря (хеш).
#mySymbol
.
Символ в Ruby - это то же самое, что и символ в реальном мире. Он используется для представления или имени чего-либо.
Символы очень часто используются для представления какого-либо состояния, например
order.status = :canceled
order.status = :confirmed
Вы также можете посмотреть на символ как на мгновенное перечисление. Вам не нужно определять символ, вы просто используете его. Эта статья объясняет это очень подробно.
Обычно переменные обычно путают со строками, но я понимаю, что вы думаете, что это переменная. Это понятно. Думайте об этом так:
Статус игрока в игре представлен числом. 1 означает живой, 2 означает неуверенный, 3 означает мертвый. Это может быть легко заменено символами. Символы могут быть :alive
:unsure
и :dead
. Чтобы проверить, жив ли игрок, вместо этого:
if player_status == 1
Вы могли бы сделать это:
if player_status == :alive