Blok kodu, czy też blok, jest grupą składającą się z zera lub większej liczby wyrażeń, wprowadzając charakteryzujący się zdefiniowanym zakresem nowy korpus. (Blok z wyrażeniami zerowymi byłby pustym blokiem i w idealnym przypadku byłby używany jedynie jako symbol zastępczy do późniejszego wypełnienia).
Bloki kodu mogą pojawiać się tylko po identyfikatorach.
Zakres odnosi się do części programu, w której skojarzenie identyfikatora (nazwy) z wartością jest prawidłowe, a nazwę można wykorzystać do utworzenia odwołania do wartości. Na przykład dowolne stałe lub zmienne utworzone w bloku kodu istnieją tylko w kontekście bloku kodu. Oznacza to, że żywotność obiektów jest ograniczona do zakresu, w którym zostały utworzone, i nie można ich wykorzystywać poza danym blokiem kodu.
Poniższy przykład ilustruje sposób obliczania maksymalnej liczby strzał, jaką gracz może zakupić z posiadaną liczbą monet. Stała MaxArrowsYouCanBuy została utworzona w bloku if, zatem zakres jest ograniczony do bloku if. Gdy stała MaxArrowsYouCanBuy zostanie wykorzystana w ciągu tekstowym print, wygeneruje błąd, ponieważ nazwa MaxArrowsYouCanBuy nie istnieje w zakresie poza wyrażeniem if.
CoinsPerQuiver : int = 100
ArrowsPerQuiver : int = 15
var Coins : int = 225
if (MaxQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
MaxArrowsYouCanBuy : int = MaxQuiversYouCanBuy * ArrowsPerQuiver
Print("Liczba strzał, które możesz kupić za monety, wynosi maksymalnie {MaxArrowsYouCanBuy}.") # Błąd: Nieznany identyfikator MaxArrowsYouCanBuy
Verse nie obsługuje wielokrotnego użycia identyfikatora, nawet jeśli jest on zadeklarowany w innym zakresie, chyba że możesz zakwalifikować identyfikator przez dodanie przed identyfikatorem członu (qualifying_scope:), w którym qualifying_scope jest nazwą modułu, klasy lub interfejsu identyfikatora. Przy każdym definiowaniu lub użyciu identyfikatora konieczne jest również dodanie do niego kwalifikatora.
Więcej informacji: moduł, klasa oraz interfejs.
Formaty bloku kodu
Bloki kodu w Verse ma trzy możliwe formaty. Wszystkie są semantycznie równoważne, więc możesz zmienić styl bloku kodu bez zmiany jego działania.
Jeśli zagnieżdżasz blok kodu w innym bloku kodu, nadal musisz użyć identyfikatora na początku zagnieżdżonego bloku kodu. Aby zagnieździć kod, użyj wyrażenia blok.
Format z odstępami
W tym formacie blok rozpoczyna się od :, a każde wyrażenie następuje w osobnym wierszu. Każdy wiersz ma jednakowe wcięcie z czterema znakami spacji.
if (test-arg-block):
wyrażenie1
wyrażenie2
Zauważ, że if (test-arg-block) nie jest częścią bloku, ale blok zaczyna się na końcu tego wiersza od :.
Można również użyć znaku ;, aby oddzielić wiele wyrażeń w jednym wierszu.
Format wielowierszowy z nawiasami
Blok jest zamknięty {}, a wyrażenia są nowymi liniami.
if (test-arg-block)
{
wyrażenie1
wyrażenie2
}
Można również użyć znaku ;, aby oddzielić wiele wyrażeń w jednym wierszu.
Format jednej linii z kropką
W tym formacie blok zaczyna się od ., każde wyrażenie znajduje się w tym samym wierszu, a ponadto każde wyrażenie jest oddzielone znakiem ;, a nie umieszczone w nowym wierszu.
if (test-arg-block). expression1; expression2
Jeśli w wyrażeniu if zawierającym else używasz formatu jednowierszowego z kropką, przed else może znajdować się tylko jedno wyrażenie. Na przykład:
if (test-arg-block). expression1 else. wyrażenie2