0Pricing
Swift Academy · Lección

Conformidad condicional

Haga que los tipos genéricos se ajusten condicionalmente a protocolos mediante cláusulas where.

Conformidad condicional es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Introducción

La conformidad condicional permite que un tipo genérico conforme a un protocolo solo cuando sus parámetros de tipo satisfacen determinadas restricciones. Es un pilar de la expresividad del sistema de tipos de Swift.

Conformidad condicional básica

```swift extension Array: Equatable where Element: Equatable { // Array is Equatable only when Element is Equatable } let a = [1,2,3] let b = [1,2,3] print(a == b) // true — works because Int is Equatable ```

Tipo genérico personalizado

```swift struct Box { var value: T } extension Box: Equatable where T: Equatable { static func == (lhs: Box, rhs: Box) -> Bool { lhs.value == rhs.value } } print(Box(value: 42) == Box(value: 42)) // true ```

Hashable condicional

```swift extension Box: Hashable where T: Hashable { func hash(into hasher: inout Hasher) { hasher.combine(value) } } // Box is Hashable; Box is not ```

Codable condicional

```swift extension Box: Codable where T: Codable {} let box = Box(value: "hello") let data = try JSONEncoder().encode(box) // works — String is Codable ```

Cláusulas where en extensiones

```swift extension Collection where Element == Int { var sum: Int { reduce(0, +) } } print([1,2,3,4].sum) // 10 // This extension only applies to collections of Int ```

Restricciones múltiples

```swift extension Dictionary where Key: Comparable, Value: Equatable { func sortedByKey() -> [(Key, Value)] { sorted { $0.key < $1.key } } } ```

Conformidad condicional de protocolos

```swift protocol Printable { func prettyPrint() } extension Optional: Printable where Wrapped: Printable { func prettyPrint() { switch self { case .none: print("nil") case .some(let v): v.prettyPrint() } } } ```

Uso de la conformidad condicional

```swift let opt: Int? = 42 // If Int conformed to Printable: // opt.prettyPrint() // "42" // Standard usage: let nums = Optional([1,2,3]) // [1,2,3]? if let arr = nums, arr == [1,2,3] { ... } // Equatable via conditional ```

Advertencia sobre conformidades retroactivas

Swift 5.7+ muestra una advertencia sobre las conformidades retroactivas (añadir una conformidad a tipos de otro módulo): ```swift extension String: SomeThirdPartyProtocol {} // ⚠️ retroactive ``` Marque explícitamente con `@retroactive` cuando sea intencionado.

Comprobación rápida

¿Qué palabra clave introduce una condición en una extensión con conformidad condicional?

Repaso

Puntos clave: • `extension T: Protocol where Param: Constraint` — conformidad condicional • Array, Optional, Result, etc. usan esto para Equatable, Hashable y Codable • Los tipos genéricos personalizados pueden hacer lo mismo • `where Element == Int` restringe a tipos concretos específicos • Las conformidades retroactivas requieren `@retroactive` en Swift 5.7+ Siguiente: requisitos de Self.

Preguntas frecuentes

¿La lección «Conformidad condicional» es gratis?

Sí — el texto completo de «Conformidad condicional» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Conformidad condicional»?

Haga que los tipos genéricos se ajusten condicionalmente a protocolos mediante cláusulas where. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Conformidad condicional»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Composición de protocolos con &
  2. Conformidad condicional
  3. Requisitos de Self y diseño con Equatable
  4. Principios del diseño orientado a protocolos
← Volver a Swift Academy