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.5description 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) // HeartsComponer 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: 21CManté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#42Formato 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 stockComprobación rápida
¿Qué propiedad requiere CustomStringConvertible?
Resumen
Ha aprendido CustomStringConvertible:
- Proporcione
var description: Stringpara 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
- CustomStringConvertible
- CustomDebugStringConvertible
- Reflexión con Mirror
- Crear tipos fáciles de depurar