Блок кода, или блок, представляет собой группу из нуля или нескольких выражений, которая вводит новое тело области видимости. (Блок, в котором ноль выражений — это пустой блок, и в идеале он должен использоваться только в качестве заполнителя, который будет заполнен позже.)
Блоки кода могут появляться только после идентификаторов.
Область видимости относится к той части программы, где действительна связь идентификатора (имени) со значением и где это имя может использоваться для ссылки на значение. Например, любые константы или переменные, созданные в блоке кода, существуют только в контексте этого блока кода. Это означает, что время жизни объектов ограничено областью видимости, в которой они созданы, и их нельзя использовать вне этого блока кода.
В следующем примере показано, как рассчитать максимальное количество стрел, которое можно купить на имеющиеся у игрока монеты. Константа MaxArrowsYouCanBuy создаётся в блоке if, поэтому её область видимости ограничена блоком if. Когда константа MaxArrowsYouCanBuy используется в строке с Print, возникает ошибка, поскольку имя MaxArrowsYouCanBuy не существует за пределами области видимости выражения if.
CoinsPerQuiver : int = 100
ArrowsPerQuiver : int = 15
var Coins : int = 225
if (MaxQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
MaxArrowsYouCanBuy : int = MaxQuiversYouCanBuy * ArrowsPerQuiver
Print("Вы можете купить максимум {MaxArrowsYouCanBuy} стрел на ваши монеты.") # Ошибка: неизвестный идентификатор MaxArrowsYouCanBuy
Язык Verse не поддерживает повторное использование идентификатора, даже если он объявлен в другой области видимости, если только вы явно не указываете область видимости идентификатора при помощи идентификатора (qualifying_scope:), который записывается перед идентификатором, где qualifying_scope — это имя класса, интерфейса или модуля идентификатора. Всегда, когда вы определяете и используете идентификатор, вы также должны добавить к нему идентификатор.
Подробнее см. в разделах Модуль, Класс и Интерфейс.
Форматы блоков кода
В Verse есть три возможных формата блоков кода. Семантически они все равны, поэтому вы можете изменить стиль блока кода, не меняя того, что он делает.
Если вы вкладываете блок кода в другой блок, вы все равно должны использовать идентификатор в начале вложенного блока кода. Чтобы создать вложенный код, используйте выражение block.
Формат с пробелами
В этом формате блок начинается с :, а каждое выражение начинается с новой строки. В начале каждой строки добавляется отступ из четырёх пробелов.
if (test-arg-block):
expression1
expression2
Обратите внимание, что if (test-arg-block) не является частью блока, но блок начинается в конце этой строки с :.
Вы также можете использовать ;, чтобы разделить выражения, стоящие в одной строке.
Многострочный формат со скобками
Блок заключён в фигурные скобки {}, а выражения начинаются с новой строки.
if (test-arg-block)
{
expression1
expression2
}
Вы также можете использовать ;, чтобы разделить выражения, стоящие в одной строке.
Формат в одну строку с точкой
В этом формате блок начинается с ., а выражения расположены в одну строку с разделением символом ;, а не начинаются с новой строки.
if (test-arg-block). expression1; expression2
Если вы используете однострочный формат с точкой в выражении if, которое содержит else, то можете использовать только одно выражение перед else. Пример:
if (test-arg-block). expression1 else. expression2