Я абсолютно новий у світі Рубі, і я трохи плутаюся з поняттям Символи. Яка різниця між символами та змінними? Чому б не просто використовувати змінні?
Дякую.
Я абсолютно новий у світі Рубі, і я трохи плутаюся з поняттям Символи. Яка різниця між символами та змінними? Чому б не просто використовувати змінні?
Дякую.
Відповіді:
Змінні та символи - це різні речі. Змінна вказує на різні типи даних. У 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