CustomStringConvertible
Definisci una descrizione leggibile per i tuoi tipi.
CustomStringConvertible è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Che cos'è CustomStringConvertible?
Questo protocollo consente di controllare l'aspetto del tipo quando viene stampato o interpolato in una stringa. Deve fornire una proprietà description.
Il valore predefinito è poco leggibile
Senza questo protocollo, le struct vengono stampate nella loro forma completa con tutti i membri, spesso troppo prolissa:
struct Point { let x: Int; let y: Int }
print(Point(x: 1, y: 2)) // Point(x: 1, y: 2)Aggiungere description
Renda il tipo conforme e fornisca 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)Utilizzata da print e String(describing:)
La Sua description viene utilizzata da print e dall'interpolazione di stringhe:
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 e proprietà dirette
description serve per il testo leggibile dagli esseri umani e destinato agli utenti. Non è pensata per essere analizzata e ricostruita: questa è una responsabilità diversa, gestita da Codable. La mantenga leggibile.
Formattare un'enumerazione
Assegni nomi intuitivi alle enumerazioni:
enum Suit: CustomStringConvertible {
case hearts, spades
var description: String {
switch self {
case .hearts: return "Hearts"
case .spades: return "Spades"
}
}
}
print(Suit.hearts) // HeartsComporre le description
Costruisca una description a partire dalle description dei membri:
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"]Nelle collezioni
La stampa di una collezione richiama la description di ogni elemento:
struct Tag: CustomStringConvertible {
let name: String
var description: String { "#\(name)" }
}
print([Tag(name: "swift"), Tag(name: "ios")]) // [#swift, #ios]L'interpolazione utilizza description
L'interpolazione di stringhe utilizza automaticamente la Sua description:
struct Temperature: CustomStringConvertible {
let celsius: Int
var description: String { "\(celsius)C" }
}
let t = Temperature(celsius: 21)
print("Now: \(t)") // Now: 21CMantenerla semplice
description può essere chiamata spesso (durante la registrazione dei log e il debug). Eviti operazioni costose al suo interno; calcoli una stringa semplice a partire dalle proprietà memorizzate.
struct ID: CustomStringConvertible {
let value: Int
var description: String { "ID#\(value)" }
}
print(ID(value: 42)) // ID#42Formattazione condizionale
description può variare in base allo stato per risultare naturale da leggere:
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 stockVerifica rapida
Quale proprietà richiede CustomStringConvertible?
Riepilogo
Ha imparato a usare CustomStringConvertible:
- Fornisca
var description: Stringper il testo destinato agli utenti - Viene utilizzata da
print,String(describing:)e dall'interpolazione - La mantenga leggibile e semplice; non punti alla ricostruzione del valore originale
- Funziona automaticamente anche all'interno delle collezioni
Successivo: CustomDebugStringConvertible.
Domande Frequenti
La lezione «CustomStringConvertible» è gratuita?
Sì — il testo completo di «CustomStringConvertible» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «CustomStringConvertible»?
Definisci una descrizione leggibile per i tuoi tipi. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «CustomStringConvertible»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- CustomStringConvertible
- CustomDebugStringConvertible
- Reflection con Mirror
- Creazione di tipi adatti al debug