score = 41
p score
Вы можете выполнить эту программу Crystal, записав ее в файл и используя crystal file.cr
на вашем терминале. Если вы это сделаете, вы увидите 41
на экране. Видите эту последнюю строчку? Он использует метод p
для отображения значения переменной на экране.
Если вы работаете с другими языками, такими как Java, C#, Go или C, обратите внимание, что это полноценная программа. В Crystal вам не нужно создавать основную функцию, объявлять переменные или указывать типы. Вместо этого при создании новой переменной и изменении ее значения используется тот же синтаксис.
В одной строке можно присвоить несколько значений нескольким переменным, указав их через запятую. Множественное присвоение обычно используется для замены значений двух переменных. Посмотрите это, например:
# Назначаем две переменные одновременно
emma, josh = 19, 16
# Это то же самое, в две строки
emma = 19
josh = 16
# Теперь поменяем их значения emma, josh = josh, emma
p emma # => 16
p josh # => 19
Этот пример начинается со строки комментария. Комментарии предназначены для добавления пояснений или дополнительных деталей в исходный код и всегда начинаются с символа #
. Затем у нас есть множественное присваивание, создающее переменные с именами emma
и josh
со значениями 19
и 16
соответственно. Это точно так же, как если бы переменные создавались по одной в две строки. Затем используется другое множественное присвоение для обмена значениями двух переменных, одновременно присваивая emma
значение переменной josh
и josh
значения переменной emma
.
Имена переменных всегда пишутся строчными буквами в соответствии с соглашением о разделении слов символом подчеркивания (известным как snake_case). Хотя это и редкость, в именах переменных также могут использоваться заглавные буквы и неанглийские буквы.
Если используемые вами значения не изменятся, вы можете использовать константы вместо переменных. Они должны начинаться с заглавной буквы и обычно пишутся заглавными буквами, слова разделяются подчеркиванием и не могут быть изменены позже. Посмотрите это, например:
FEET = 0.3048 # Метры
INCHES = 0.0254 # Метры
my_height = 6 * FEET + 2 * INCHES # 1.87960 метров
FEET = 20 # Ошибка: константа FEET уже инициализирована.
Этот код показывает определение двух констант: ФУТОВ и ДЮЙМОВ. В отличие от переменных, им нельзя впоследствии присвоить другое значение. К константам можно получить доступ и использовать их в выражениях вместо их значений. Они полезны при присвоении имен специальным или повторяющимся значениям. Они могут хранить любые данные, а не только числа.
Теперь давайте рассмотрим некоторые из наиболее распространенных примитивных типов данных.
Числа (Numbers)
Как и в других языках, числа бывают разных видов; вот таблица с их описанием:
При записи числа в соответствии со значением будет использоваться наиболее подходящий тип: если это целое число, то это будет Int32
, Int64
или UInt64
, в зависимости от того, что наиболее подходит. Если это значение с плавающей запятой, оно всегда будет Float64
. Вы также можете добавить суффикс, чтобы указать один конкретный тип. Наконец, для улучшения читаемости можно свободно использовать символы подчеркивания. Вот несколько примеров того, как можно выразить числа:
small_number = 47 # Это тип Int32
larger_number = 8795656243 # Теперь это тип Int64
very_compact_number = 47u8 # Тип UInt8 из-за суффикса
other_number = 1_234_000 # Это то же самое, что 1234000
negative_number = -17 # Есть и отрицательные значения
invalid_number = 547_u8 # 547 не соответствует диапазону UInt8
pi = 3.141592653589 # Дробные числа имеют формат Float64
imprecise_pi = 3.14159_f32 # Это Float32
Как и ожидалось, вы также можете выполнять математические операции с числами. В большинстве языков это работает аналогично математике. Операторов много, и их можно переставлять в зависимости от их приоритета. В любом случае круглые скобки могут помочь организовать более крупное выражение. Давайте посмотрим пример:
hero_health_points = 100
hero_defense = 7
enemy_attack = 16
damage = enemy_attack - hero_defense # Враг наносит 9 единиц урона
hero_health_points -= damage # Теперь здоровье героя составляет 91
healing_factor = 0.05 # Герой исцеляется со скоростью 5% за ход
recovered_health = hero_health_points * healing_factor