Выбрать главу

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)

Как и в других языках, числа бывают разных видов; вот таблица с их описанием:

Таблица 2.1 – Виды чисел и их пределы

При записи числа в соответствии со значением будет использоваться наиболее подходящий тип: если это целое число, то это будет 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