Блок кода, или блок, представляет собой группу из нуля или нескольких выражений, которая вводит новое тело области видимости. (Блок, в котором ноль выражений — это пустой блок, и в идеале он должен использоваться только в качестве заполнителя, который будет заполнен позже.)
Блоки кода могут появляться только после идентификаторов.
Область видимости относится к той части программы, где действительна связь идентификатора (имени) со значением и где это имя может использоваться для ссылки на значение. Например, любые константы или переменные, созданные в блоке кода, существуют только в контексте этого блока кода. Это означает, что время жизни объектов ограничено областью видимости, в которой они созданы, и их нельзя использовать вне этого блока кода.
В следующем примере показано, как рассчитать максимальное количество стрел, которое можно купить на имеющиеся у игрока монеты. Константа 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