Le terme énumération, abrégé enum, signifie nommer ou énumérer une série d'éléments, appelés énumérateurs. Dans Verse, il s'agit d'un type qui peut être utilisé pour des éléments tels que les jours de la semaine ou les directions d'une boussole.
Cliquez sur l'image pour l'agrandir.
Énumérations fermées et ouvertes
Verse utilise les spécificateurs d'attribut <open> et <closed> sur les énumérations pour déterminer la façon dont vous pouvez modifier la définition de l'énumération une fois votre île publiée.
Les énumérations sont fermées par défaut. Avec les énumérations fermées, vous ne pouvez pas ajouter ou réorganiser les valeurs d'énumération ou convertir une énumération fermée en énumération ouverte une fois que votre île a été publiée.
Les énumérations fermées conviennent mieux dans les cas où vos valeurs sont censées rester les mêmes, par exemple les jours de la semaine.
Avec les énumérations ouvertes, vous pouvez :
Ajouter de nouvelles valeurs d'énumération
Réorganiser les valeurs d'énumération
Convertir une énumération ouverte en énumération fermée
Les énumérations ouvertes sont principalement utilisées lorsque vous prévoyez que le nombre de valeurs dans votre énumération peut augmenter à l'avenir. Par exemple, une énumération de types d'armes.
Les énumérations ouvertes ne peuvent pas être utilisées dans une instruction case sans un cas par défaut. Les énumérations fermées peuvent être utilisées dans les instructions case sans cas par défaut uniquement si toutes les valeurs d'énumération ont un cas.
Créer une énumération
| action | Exemple de code |
|---|---|
Créer des énumérations fermées : Les énumérations sont fermées par défaut. Utilisez le mot-clé Vous pouvez explicitement définir l'énumération comme fermée en incluant le spécificateur | Verse |
Créer des énumérations ouvertes : Vous devez explicitement définir une énumération ouverte en incluant le spécificateur | Verse |
Accès à un énumérateur : utilisez | Verse |
Type persistable
Une énumération est capable de persister lorsqu'elle est définie avec le spécificateur <persistable>. Autrement dit, vous pouvez l'utiliser dans vos variables weak_map à étendue de module et faire persister leurs valeurs d'une session de jeu à une autre.
Pour en savoir plus sur la persistance dans Verse, consultez la rubrique Utiliser des données persistantes dans Verse.
Les énumérations non persistantes ne peuvent pas être utilisées avec des données capables de persister.
L'exemple qui suit est celui d'une énumération fermée capable de persister, stockée et actualisée des jours de la semaine, à laquelle le joueur peut accéder ultérieurement.
day := enum<persistable>:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
SundaySi ce paramètre n'est pas spécifié, toutes les énumérations sont fermées par défaut.
Énumérations publiées
Une fois que vous avez publié votre île, certains aspects des énumérations fermées et ouvertes avec le spécificateur <persistable> sont corrigés.
Énumérations fermées :
Mise à jour impossible pour une conversion en énumération
<open>.Impossible d'ajouter, de renommer, de réorganiser ou de supprimer des valeurs d'énumération.
Si ce paramètre n'est pas spécifié, vous pouvez ajouter le spécificateur
<closed>.
Énumérations ouvertes :
Mise à jour possible pour une conversion en énumération fermée avec le spécificateur
<closed>.Possibilité d'ajouter et de réorganiser les valeurs d'énumération.
Impossible de renommer ou de supprimer les valeurs d'énumération.
Impossible à utiliser dans les instructions case sans cas par défaut.