Typ wyliczeniowy (enum) jest skrótem od angielskiego słowa oznaczającego wyliczenie, czyli nazwanie serii rzeczy nazywanych modułami wyliczającymi albo utworzenie ich listy. Ten typ w Verse można zastosować do takich elementów, jak dni tygodnia czy kierunki na kompasie.
Kliknij ilustrację, aby ją powiększyć.
Zamknięte i otwarte wyliczenia
Verse używa specyfikatorów atrybutu <open> i <closed> w wyliczeniach, aby określić sposób zmiany definicji wyliczenia po opublikowaniu wyspy.
Wyliczenia są domyślnie zamknięte. W przypadku zamkniętych wyliczeń nie można dodawać wartości, zmieniać ich kolejności ani zmieniać zamkniętego wyliczenia na otwarte po opublikowaniu wyspy.
Zamknięte wyliczenia najlepiej nadają się do zastosowań, w których wartości powinny pozostać takie same, na przykład dni tygodnia.
Dzięki otwartym wyliczeniom możesz:
Dodawać nowe wartości wyliczenia.
Zmienić kolejność wartości wyliczenia.
Zmienić wyliczenie z otwartego na zamknięte.
Otwarte wyliczenia najlepiej wykorzystywać, gdy oczekuje się, że liczba wartości w typie wyliczeniowym może w przyszłości wzrastać. Na przykład wyliczenie typów broni.
Otwartych wyliczeń nie można używać w poleceniu case bez domyślnego przypadku. Zamkniętych wyliczeń można używać w poleceniach case bez domyślnego przypadku tylko wtedy, gdy wszystkie wartości wyliczenia mają przypadek.
Tworzenie wyliczenia
| Akcja | Przykład kodu |
|---|---|
Tworzenie zamkniętych wyliczeń: Wyliczenia są domyślnie zamknięte. Tworzy się je za pomocą słowa kluczowego Wyliczenie można zdefiniować w sposób jawny jako zamknięte poprzez dodanie specyfikatora | Verse |
Tworzenie otwartych wyliczeń: Wyliczenie należy zdefiniować w sposób jawny jako otwarte poprzez dodanie specyfikatora | Verse |
Uzyskiwanie dostępu do modułu wyliczającego: Dodaj znak | Verse |
Typ możliwy do persystencji
Wyliczenie jest możliwe do persystencji, gdy jest zdefiniowane za pomocą specyfikatora <persistable>. Oznacza to, że możesz ich użyć w zmiennych weak_map o zasięgu modułowym i zachować ich wartości podczas sesji gry.
Więcej informacji na temat persystencji w Verse znajdziesz w artykule Używanie persystentnych danych w Verse.
Wyliczeń niepersystentnych nie można używać z danymi persystentnymi.
Poniższy przykład pokazuje możliwe do persystencji zamknięte wyliczenie do dni tygodnia, które można przechowywać i aktualizować i które jest dostępne później dla gracza.
day := enum<persistable>:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
SundayJeśli nie zostanie określone inaczej, wszystkie wyliczenia są domyślnie zamknięte.
Opublikowane wyliczenia
Po opublikowaniu wyspy niektóre aspekty zamkniętych i otwartych wyliczeń ze specyfikatorem <persistable> są stałe.
Zamknięte wyliczenia:
Nie można zaktualizować do
<open>.Nie można dodawać wartości wyliczenia, zmieniać ich nazwy, zmieniać ich kolejności ani usuwać.
Jeśli nie określono, można dodać specyfikator
<closed>.
Otwarte wyliczenia:
Można zaktualizować do zamkniętego wyliczenia za pomocą specyfikatora
<closed>.Można dodawać wartości wyliczenia i zmieniać ich kolejność.
Nie można zmienić nazwy ani usunąć wartości wyliczenia.
Nie można używać w poleceniach case bez domyślnego przypadku.