0Pricing
Swift Academy · Lezione

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.5

description 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)  // Hearts

Comporre 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: 21C

Mantenerla 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#42

Formattazione 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 stock

Verifica rapida

Quale proprietà richiede CustomStringConvertible?

Riepilogo

Ha imparato a usare CustomStringConvertible:

  • Fornisca var description: String per 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

  1. CustomStringConvertible
  2. CustomDebugStringConvertible
  3. Reflection con Mirror
  4. Creazione di tipi adatti al debug
← Torna a Swift Academy