0Pricing
Swift Academy · Lección

CustomStringConvertible

Defina una descripción legible para sus tipos.

CustomStringConvertible es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 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.

¿Qué es CustomStringConvertible?

Este protocolo permite controlar cómo aparece su tipo al imprimirlo o interpolarlo en una cadena. Debe proporcionar una propiedad description.

El valor predeterminado es poco útil

Sin este protocolo, las estructuras muestran su forma completa con todos sus miembros, que a menudo resulta ruidosa:

struct Point { let x: Int; let y: Int }
print(Point(x: 1, y: 2))  // Point(x: 1, y: 2)

Añadir description

Adopte el protocolo y proporcione var description: String:

struct Point: CustomStringConvertible {
    let x: Int
    let y: Int
    var description: String { "(\(x), \(y))" }
}
print(Point(x: 1, y: 2))  // (1, 2)

Usado por print y String(describing:)

Su description es lo que utilizan print y la interpolación de cadenas:

struct Money: CustomStringConvertible {
    let cents: Int
    var description: String { "$\(Double(cents) / 100)" }
}
let m = Money(cents: 250)
print("price is \(m)")  // price is $2.5

description frente a propiedades directas

description está destinada a texto legible para las personas y dirigido al usuario. No está pensada para volver a analizarse; esa es otra cuestión (Codable). Manténgala legible.

Dar formato a una enumeración

Proporcione nombres claros a las enumeraciones:

enum Suit: CustomStringConvertible {
    case hearts, spades
    var description: String {
        switch self {
        case .hearts: return "Hearts"
        case .spades: return "Spades"
        }
    }
}
print(Suit.hearts)  // Hearts

Componer descripciones

Construya una descripción a partir de las descripciones de sus miembros:

struct Card: CustomStringConvertible {
    let rank: Int
    let suit: String
    var description: String { "\(rank) of \(suit)" }
}
let cards = [Card(rank: 1, suit: "H"), Card(rank: 13, suit: "S")]
print(cards.map { $0.description })  // ["1 of H", "13 of S"]

Dentro de las colecciones

Imprimir una colección llama a la description de cada elemento:

struct Tag: CustomStringConvertible {
    let name: String
    var description: String { "#\(name)" }
}
print([Tag(name: "swift"), Tag(name: "ios")])  // [#swift, #ios]

La interpolación utiliza description

La interpolación de cadenas recoge automáticamente su description:

struct Temperature: CustomStringConvertible {
    let celsius: Int
    var description: String { "\(celsius)C" }
}
let t = Temperature(celsius: 21)
print("Now: \(t)")  // Now: 21C

Manténgala económica

description puede llamarse con frecuencia (al registrar mensajes o depurar). Evite realizar tareas costosas en ella; calcule una cadena sencilla a partir de las propiedades almacenadas.

struct ID: CustomStringConvertible {
    let value: Int
    var description: String { "ID#\(value)" }
}
print(ID(value: 42))  // ID#42

Formato condicional

description puede ramificarse según el estado para que el resultado se lea de forma natural:

struct Stock: CustomStringConvertible {
    let count: Int
    var description: String {
        count == 0 ? "Out of stock" : "\(count) in stock"
    }
}
print(Stock(count: 0))  // Out of stock
print(Stock(count: 5))  // 5 in stock

Comprobación rápida

¿Qué propiedad requiere CustomStringConvertible?

Resumen

Ha aprendido CustomStringConvertible:

  • Proporcione var description: String para el texto dirigido al usuario
  • Lo utilizan print, String(describing:) y la interpolación
  • Manténgalo legible y económico; no pretenda que permita reconstruir el valor original
  • Funciona automáticamente dentro de las colecciones

Siguiente: CustomDebugStringConvertible.

Preguntas frecuentes

¿La lección «CustomStringConvertible» es gratis?

Sí — el texto completo de «CustomStringConvertible» 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 «CustomStringConvertible»?

Defina una descripción legible para sus tipos. 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 1 de 4.

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

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. CustomStringConvertible
  2. CustomDebugStringConvertible
  3. Reflexión con Mirror
  4. Crear tipos fáciles de depurar
← Volver a Swift Academy