Swift 101 - Nouvelles et puissantes énumérations

Dans cet article, je vais vous présenter quelques-unes des nouvelles fonctionnalités puissantes des dénombrements dans Swift.

Déclarer des dénombrements rapides

Presque tous les langages de programmation ont le concept d'énumération. Une énumération vous permet de regrouper un ensemble de constantes liées entre elles. Elle contient une liste complète de toutes les valeurs possibles pour un type donné.

Maîtrisez votre iPhone en une minute par jour :

Inscrivez-vous à la newsletter "Tip of the Day" de iphonologie et nous vous enverrons chaque jour un conseil pour gagner du temps et tirer le meilleur parti de votre iPhone ou iPad.

Dans Swift, vous déclarez une énumération simple comme suit :

Cette énumération contient une liste complète de toutes les fonctions disponibles sur une très simple calculatrice. Chaque cas mot-clé déclare un membre séparé de l'énumération.

Vous pouvez également déclarer une énumération en utilisant un seul cas et énumérer les membres de l'énumération séparés par des virgules comme indiqué ici :

Contrairement aux dénombrements en Objective-C, les membres d'un dénombrement Swift ne se voient pas automatiquement attribuer une valeur entière. Chaque membre est une valeur à part entière de l'énumération.

Vous faites référence aux valeurs d'un dénombrement en spécifiant le type de dénombrement, suivi d'un point, puis du membre du dénombrement comme indiqué ici (j'ai spécifié le type de la variable currentOperation pour renforcer le fait qu'il s'agit du type de l'énumération- CalculatorOperation ) :

C'est différent de l'Objective-C où vous ne faites référence qu'au nom du membre (c'est-à-dire UITableViewCellAccessoryCheckMark ). Je préfère la nouvelle syntaxe Swift car elle démontre clairement que les membres font partie de la même énumération. En fait, lorsque vous tapez le nom de l'énumération et un point, la complétion du code fait apparaître une liste de membres parmi lesquels vous pouvez choisir.

Une fois que le type d'une variable est déclaré comme étant d'une énumération particulière, vous pouvez utiliser une syntaxe de point raccourcie pour accéder aux membres. Ceci est particulièrement utile dans les déclarations de type switch comme indiqué ici :

Dénombrement des valeurs brutes

Parfois, vous pouvez vouloir associer une valeur à chaque membre d'une énumération. Par exemple, en Objective-C, il est courant de créer des valeurs de chaîne associées pour les membres d'une énumération en créant une classe enveloppe pour l'énumération. C'est un peu compliqué, mais cela fonctionne.

Heureusement, dans Swift, cette fonctionnalité est intégrée dans les énumérations sous la forme de valeurs brutes . Par exemple, l'énumération suivante déclare une valeur de chaîne associée pour chaque membre de l'énumération :

Lorsque vous déclarez des valeurs brutes pour une énumération, vous ajoutez deux points après le nom de l'énumération suivi du type des valeurs brutes associées (elles doivent toutes être du même type.) Ensuite, vous spécifiez la valeur brute pour chaque membre de l'énumération.

Voici quelques règles régissant les valeurs brutes :

  • Toutes les valeurs brutes doivent être du même type
  • Les valeurs brutes peuvent être des chaînes de caractères, des caractères, ou tout type de nombre entier ou à virgule flottante
  • Dans un dénombrement, chaque valeur brute doit être unique
  • Les valeurs brutes entières s'auto-incrémentent si aucune valeur n'est spécifiée pour certains des membres du dénombrement.

Vous pouvez accéder à la valeur brute d'un membre du recensement en appelant sa méthode toRaw() . Par exemple :

Cette méthode accepte un paramètre de type DeviceFamily et accède à la valeur brute String en appelant la méthode toRaw() sur le membre DeviceFamily . Ainsi, par exemple, si DeviceFamily.AppleTV est passé à cette méthode, l'appel à la méthode toRaw() permettra de stocker la chaîne "Apple TV" dans la variable familyName .

Inversement, vous pouvez utiliser une méthode d'énumération deRaw() pour récupérer le membre de l'énumération pour une valeur brute particulière comme indiqué ici :

Le point d'interrogation après DeviceFamily est le moyen utilisé par Swift pour indiquer que la valeur de la variable DeviceFamily peut être nulle. En effet, la méthode fromRaw() peut ne pas trouver de membre d'énumération correspondant.

Dénombrement des valeurs associées

Dans Swift, les énumérations disposent également d'une fonction avancée qui permet de stocker les valeurs associées aux membres de l'énumération. Le concept est similaire, mais différent des valeurs brutes.

Par exemple, le code suivant déclare une énumération UniqueIdentifier qui a UUID et AutoIncrement membres :

Le membre UUID peut avoir une valeur associée String et le membre AutoIncrement peut avoir une valeur associée Int . Cette énumération peut être utilisée dans une situation où vous créez un pont entre deux applications différentes : une application qui stocke les identificateurs uniques sous forme de valeurs UUID et une autre qui stocke les identificateurs uniques sous forme d'entiers.

Notez que la déclaration d'énumération UniqueIdentifier ne fixe pas la valeur de chaque membre comme vous le faites lorsque vous spécifiez des valeurs brutes. Elle déclare plutôt simplement le type de la valeur associée à chaque membre.

Vous pouvez déclarer qu'une variable est de type UniqueIdentifier et ensuite enregistrer une valeur Int ou UUID dans la variable. Par exemple :

Vous pouvez utiliser une instruction switch pour obtenir la valeur d'une variable UniqueIdentifier comme indiqué ici :

Dans une instruction switch , vous pouvez extraire chaque valeur associée comme une variable en utilisant le préfixe var ou comme une constante en utilisant le préfixe let comme indiqué ci-dessus.

Conclusion

C'est formidable de voir ces fonctionnalités puissantes et plus modernes dans Swift. En fin de compte, ces outils aident à rendre votre code à l'épreuve des balles et à faciliter encore plus l'écriture de vos applications iOS.

Click to rate this post!
[Total: 0 Average: 0]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *