Язык программирования Crystal

Присваивание

Присваивание выполняется в помощью литерала присваивания (=).

# Присваивание локальной переменной
local = 1

# Присваивание переменной объекта
@instance = 2

# Присваивание переменной класса
@@class = 3

# Присваивание глобальной переменной
$global = 4

Все эти типы переменных будут объяснены позже.

Также доступны другие операторы, содержащие в себе операцию присваивания = и являющиеся синтаксическим сахаром:

local += 1  # то же, что и: local = local + 1

# выполняется также и для этих операторов:
# +, -, *, /, %, |, &, ^, **, <<, >>

local ||= 1 # то же, что и: local || (local = 1)
local &&= 1 # то же, что и: local && (local = 1)

Способ вызова, заканчивающийся литералом присваивания = также имеет синтаксический сахар:

# Сеттер
person.name=("John")

# что может быть записано так:
person.name = "John"

# присваивание элементу массива
objects.[]=(2, 3)

# аналогично этому:
objects[2] = 3

# не связано с присваиванием, но тоже синтаксический сахар:
objects.[](2, 3)

# то же, что и:
objects[2, 3]

Обратите внимание, что операторы || и && используют метод []? для проверки присутствия ключа.

person.age += 1        # то же, что и: person.age = person.age + 1

person.name ||= "John" # то же, что и: person.name || (person.name = "John")
person.name &&= "John" # то же, что и: person.name && (person.name = "John")

objects[1] += 2        # то же, что и: objects[1] = objects[1] + 2

objects[1] ||= 2       # то же, что и: objects[1]? || (objects[1] = 2)
objects[1] &&= 2       # то же, что и: objects[1]? && (objects[1] = 2)