Переменные
Чтобы сохранить значение и использовать его позже, его можно присвоить переменной.
Например, если вы хотите сказать Hello Penny! три раза, вам не нужно повторять одну и ту же строку несколько раз. Вместо этого можно присвоить её переменной и использовать повторно:
message = "Hello Penny!"
puts message
puts message
puts message
Эта программа выводит строку Hello Penny! три раза в стандартный поток вывода, каждый раз добавляя перевод строки.
Имя переменной всегда начинается со строчной буквы Unicode (или знака подчёркивания, который, однако, зарезервирован для особых случаев использования) и может состоять из буквенно-цифровых символов и знаков подчёркивания. Согласно общепринятому соглашению, заглавные буквы не используются, а имена записываются в snake_case.
Примечание
Переменные, о которых говорится в этом уроке, называются локальными переменными. Другие виды переменных будут рассмотрены позже. Пока мы сосредоточимся только на локальных переменных.
Тип
Тип переменной автоматически определяется компилятором. В приведённом выше примере это String.
Это можно проверить с помощью typeof:
message = "Hello Penny!"
p! typeof(message)
Примечание
p! похож на puts: он выводит значение в стандартный поток вывода, но также выводит и выражение в коде. Благодаря этому он становится полезным инструментом для проверки состояния программы на Crystal и отладки.
Повторное присваивание значения
Переменной можно повторно присвоить другое значение:
message = "Hello Penny!"
p! message
message = "Hello Sheldon!"
p! message
Это работает и со значениями разных типов. Тип переменной меняется при присваивании значения другого типа. Компилятор достаточно умён, чтобы знать, какой тип имеет переменная в каждой точке программы.
message = "Hello Penny!"
p! message, typeof(message)
message = 73
p! message, typeof(message)
To the extent possible under law, the persons who contributed to this workhave waived
all copyright and related or neighboring rights to this workby associating CC0 with it.
https://crystal-lang.org/reference/1.2/tutorials/basics/20_variables.html