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