0Pricing
Swift Academy · Aula

CustomStringConvertible

Defina uma descrição legível para seus tipos.

CustomStringConvertible é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

O que é CustomStringConvertible?

Este protocolo permite controlar como seu tipo aparece quando é impresso ou interpolado em uma string. Você fornece uma propriedade description.

O padrão é pouco legível

Sem isso, as estruturas são impressas em seu formato completo, com todos os membros, o que costuma gerar muito ruído:

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

Adicionando description

Conforme o tipo e forneça 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 e String(describing:)

Sua description é o que print e a interpolação de strings usam:

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 versus propriedades diretas

description serve para texto legível e voltado ao usuário. Ela não foi feita para ser analisada e reconstruída — essa é uma preocupação diferente (Codable). Mantenha o texto legível.

Formatando uma enumeração

Dê nomes amigáveis às enumerações:

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

Compondo descrições

Construa uma description a partir das descrições dos membros:

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 coleções

Imprimir uma coleção chama a description de cada elemento:

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

A interpolação usa description

A interpolação de strings usa automaticamente sua description:

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

Mantenha-a simples

description pode ser chamada com frequência (para registro e depuração). Evite operações pesadas dentro dela; calcule uma string simples a partir das propriedades armazenadas.

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

Formatação condicional

description pode ramificar com base no estado para produzir uma leitura 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

Verificação rápida

Qual propriedade CustomStringConvertible exige?

Recapitulação

Você aprendeu sobre CustomStringConvertible:

  • Forneça var description: String para texto voltado ao usuário
  • É usado por print, String(describing:) e pela interpolação
  • Mantenha-o legível e simples; não tente permitir a reconstrução do valor original
  • Funciona automaticamente dentro de coleções

Próximo tópico: CustomDebugStringConvertible.

Perguntas Frequentes

A aula “CustomStringConvertible” é grátis?

Sim — o texto completo de “CustomStringConvertible” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “CustomStringConvertible”?

Defina uma descrição legível para seus tipos. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “CustomStringConvertible”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. CustomStringConvertible
  2. CustomDebugStringConvertible
  3. Reflexão com Mirror
  4. Construção de Tipos Fáceis de Depurar
← Voltar para Swift Academy