Enum, enumerator (numaralandırıcı) adı verilen ve bir dizi şeyi adlandırmak veya listelemek anlamına gelen enumeration (numaralandırma) sözcüğünün kısaltmasıdır. Bu, Verse’te haftanın günleri veya pusula yönleri gibi şeyler için kullanılabilecek bir türdür.
Büyütmek için resme tıkla.
Kapalı ve Açık Enum’lar
Verse, adan yayınlandıktan sonra enum tanımını nasıl değiştirebileceğini belirlemek için enum’lardaki <open> ve <closed> öznitelik belirleyicilerini kullanır.
Enum’lar varsayılan olarak kapalıdır. Kapalı enum’larla, adan yayınlandıktan sonra enum değerleri ekleyemezsin veya onları yeniden sıralayamazsın ya da kapalı bir enum’ı açık bir enum olarak değiştiremezsin.
Kapalı enum’ların daha çok, değerlerinin aynı kalmasının beklendiği durumlarda (haftanın günleri gibi) kullanılması doğrudur.
Açık enum’larla şunları yapabilirsin:
Yeni enum değerleri eklemek.
Enum değerlerini yeniden sıralamak.
Açık bir enum’ı kapalı bir enum olarak değiştirmek.
Açık enum’ların daha çok, enum’ındaki değer sayısının gelecekte artabileceğini düşündüğün zamanlarda kullanılması doğrudur. Örneğin, bir silah türleri enum’ı.
Açık enum’lar, varsayılan bir case olmadan bir case deyiminde kullanılamaz. Kapalı enum’lar, varsayılan bir case olmadan case deyimlerinde yalnızca tüm enum değerlerinin bir case’i varsa kullanılabilir.
Enum Oluşturma
| aksiyon | Kod Örneği |
|---|---|
Kapalı enum’lar oluşturma: Enum’lar varsayılan olarak kapalıdır.
| Verse |
Açık enum’lar oluşturma:
| Verse |
Numaralandırıcıya erişim: Enum üzerinde | Verse |
Kalıcı Tür
Bir enum, <persistable> belirleyicisi ile tanımlandığında kalıcıdır. Yani bu değerleri hem modül kapsamına alınmış weak_map değişkenleriyle kullanabilir hem de değerlerini farklı oyun oturumları arasında sürdürebilirsin.
Verse’te süreklilik hakkında daha ayrıntılı bilgi için Verse’te Kalıcı Veri Kullanımı bölümüne bakabilirsin.
Kalıcı olmayan enum’lar kalıcı verilerle kullanılamaz.
Aşağıda, bir oyuncu için depolanabilecek, güncellenebilecek ve daha sonra erişilebilecek, haftanın günlerine dair kapalı, kalıcı bir enum örneği verilmiştir.
day := enum<persistable>:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
SundayBelirtilmemesi halinde tüm enum’lar varsayılan olarak kapalıdır.
Yayınlanmış Enum’lar
Adanı yayınladıktan sonra <persistable> belirleyicisine sahip kapalı ve açık enum’ların belirli unsurları artık sabittir.
Kapalı enum’lar:
<open>olacak şekilde güncellenemez.Enum değerleri ekleyemez, onları yeniden adlandırılamaz, yeniden sıralayamaz veya kaldıramaz.
Belirtilmemişse,
<closed>belirleyicisini ekleyebilirsin.
Açık enum’lar:
<closed>belirleyicisiyle kapalı bir enum olacak şekilde güncellenebilir.Enum değerleri ekleyebilir ve onları yeniden sıralayabilir.
Enum değerlerini yeniden adlandıramaz veya kaldıramaz.
Varsayılan bir case olmadan case deyimlerinde kullanılamaz.