CustomStringConvertible
Definiera en läsbar beskrivning för era typer.
CustomStringConvertible är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad är CustomStringConvertible?
Detta protokoll låter Er styra hur Er typ visas när den skrivs ut eller interpoleras i en sträng. Ni tillhandahåller en egenskap med namnet description.
Standardformatet är otympligt
Utan detta skriver struct ut hela sin medlemsvisa form, vilket ofta blir svåröverskådligt:
struct Point { let x: Int; let y: Int }
print(Point(x: 1, y: 2)) // Point(x: 1, y: 2)Lägga till description
Följ protokollet och tillhandahåll 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)Används av print och String(describing:)
Er description används av print och stränginterpolation:
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 jämfört med direkta egenskaper
description är avsedd för läsbar text som riktar sig till användare. Den är inte tänkt att parsas tillbaka – det är en annan uppgift (Codable). Håll den lättläst.
Formatera ett enum
Ge enum-värden lättbegripliga namn:
enum Suit: CustomStringConvertible {
case hearts, spades
var description: String {
switch self {
case .hearts: return "Hearts"
case .spades: return "Spades"
}
}
}
print(Suit.hearts) // HeartsSätta samman beskrivningar
Bygg en description från medlemmarnas beskrivningar:
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"]Inuti samlingar
När en samling skrivs ut anropas description för varje element:
struct Tag: CustomStringConvertible {
let name: String
var description: String { "#\(name)" }
}
print([Tag(name: "swift"), Tag(name: "ios")]) // [#swift, #ios]Interpolation använder description
Stränginterpolation hämtar automatiskt Er description:
struct Temperature: CustomStringConvertible {
let celsius: Int
var description: String { "\(celsius)C" }
}
let t = Temperature(celsius: 21)
print("Now: \(t)") // Now: 21CHåll den enkel
description kan anropas ofta (vid loggning och felsökning). Undvik tidskrävande arbete i den; beräkna en enkel sträng från lagrade egenskaper.
struct ID: CustomStringConvertible {
let value: Int
var description: String { "ID#\(value)" }
}
print(ID(value: 42)) // ID#42Villkorlig formatering
description kan förgrena sig utifrån tillståndet för att bli naturlig att läsa:
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 stockSnabb kontroll
Vilken egenskap kräver CustomStringConvertible?
Sammanfattning
Ni har lärt Er om CustomStringConvertible:
- Tillhandahåll
var description: Stringför text som riktar sig till användare - Används av
print,String(describing:)och interpolation - Håll den läsbar och billig att beräkna; sikta inte på att kunna återskapa objektet exakt
- Fungerar automatiskt inuti samlingar
Nästa: CustomDebugStringConvertible.
Lär dig Swift med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 122
- Lektioner
- 409
Vanliga frågor
Är lektionen ”CustomStringConvertible” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”CustomStringConvertible”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”CustomStringConvertible”?
Definiera en läsbar beskrivning för era typer. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Swift Academy?
Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”CustomStringConvertible”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Swift Academy-lektionen?
Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- CustomStringConvertible
- CustomDebugStringConvertible
- Reflection med Mirror
- Bygga typer som är enkla att felsöka