Types opaques avec le mot-clé some
Renvoyer des types opaques depuis des fonctions pour préserver l’identité du type sans l’exposer.
Types opaques avec le mot-clé some est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Le problème résolu par les types opaques
Retourner un type de protocole avec any fait perdre les informations de type. some les préserve tout en masquant l’implémentation.
protocol Shape { var area: Double { get } }
struct Circle: Shape { var area: Double { .pi * 4 } }Retourner some Protocol
some Shape comme type de retour indique à l’appelant « je retourne un type Shape précis » sans révéler lequel.
func makeShape() -> some Shape {
return Circle()
}
let s = makeShape()
print(s.area)L’identité du type est préservée
Comme les types some ont un type sous-jacent fixe, le compilateur autorise les opérations qui nécessitent Self.
func makeEquatableShape() -> some Shape & Equatable {
return Circle()
}
let a = makeEquatableShape()
let b = makeEquatableShape()
print(a == b) // works because types matchsome ou any
some est opaque (un seul type fixe), tandis que any est existentiel (n’importe quel type conforme à l’exécution).
func withSome() -> some Shape { Circle() } // opaque
func withAny() -> any Shape { Circle() } // existentialsome dans le body de SwiftUI
SwiftUI utilise some View afin que le body de chaque vue retourne un seul type cohérent sans exposer les détails internes de la disposition.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}Paramètres opaques avec some
Swift 5.7+ autorise some Protocol à la position des paramètres comme sucre syntaxique pour les contraintes génériques.
func printArea(_ shape: some Shape) {
print(shape.area)
}
printArea(Circle())Génériques inversés
Un paramètre opaque some P équivaut à . Le compilateur déduit T au point d’appel.
func doubled(_ value: some Numeric) -> some Numeric {
value * 2
}Contraintes sur some
Vous pouvez composer des protocoles avec des types opaques comme avec des génériques.
func process(_ item: some Codable & Hashable) {
let hash = item.hashValue
print(hash)
}Retourner des types différents
Contrairement aux types existentiels, vous ne pouvez pas retourner différents types conformes depuis différentes branches avec des types opaques.
// This would NOT compile:
// func shape(_ big: Bool) -> some Shape {
// big ? Circle() : Square() // ERROR: different types
// }Types opaques dans les protocoles
Les protocoles avec des types associés deviennent plus simples à utiliser comme types de retour avec some.
protocol Buildable { associatedtype Output; func build() -> Output }
func build(_ b: some Buildable) -> some Any {
b.build()
}Quand choisir some
Préférez some lorsque vous retournez un type cohérent et souhaitez en préserver l’identité. Utilisez any lorsque vous avez besoin de collections hétérogènes.
var shapes: [any Shape] = [Circle(), Circle()]
let single: some Shape = Circle()Vérification rapide
Que garantit le mot-clé some concernant un type de retour ?
Récapitulatif de la leçon
some crée des types de retour opaques qui masquent le type concret tout en préservant l’identité du type. Le some View de SwiftUI en est l’exemple canonique. Utilisez some pour les retours d’un type unique et any pour les collections hétérogènes.
Questions Fréquemment Posées
La leçon « Types opaques avec le mot-clé some » est-elle gratuite ?
Oui — le texte complet de « Types opaques avec le mot-clé some » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Types opaques avec le mot-clé some » ?
Renvoyer des types opaques depuis des fonctions pour préserver l’identité du type sans l’exposer. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Types opaques avec le mot-clé some » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Contraintes génériques et clauses where
- Types opaques avec le mot-clé some
- Existentielles avec any et effacement de type
- Types associés principaux et erreurs typées