Tipos opacos com a palavra-chave some
Retorne tipos opacos de funções para preservar a identidade do tipo sem expô-la.
Tipos opacos com a palavra-chave some é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 2 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 problema que os tipos opacos resolvem
Retornar um tipo de protocolo com any perde informações de tipo. some as preserva enquanto oculta a implementação.
protocol Shape { var area: Double { get } }
struct Circle: Shape { var area: Double { .pi * 4 } }Retornando some Protocol
some Shape como tipo de retorno informa ao chamador "Eu retorno um tipo Shape específico" sem revelar qual é.
func makeShape() -> some Shape {
return Circle()
}
let s = makeShape()
print(s.area)A identidade do tipo é preservada
Como os tipos some têm um tipo subjacente fixo, o compilador permite operações que exigem Self.
func makeEquatableShape() -> some Shape & Equatable {
return Circle()
}
let a = makeEquatableShape()
let b = makeEquatableShape()
print(a == b) // works because types matchsome vs. any
some é opaco (um único tipo fixo), enquanto any é existencial (qualquer tipo em conformidade em tempo de execução).
func withSome() -> some Shape { Circle() } // opaque
func withAny() -> any Shape { Circle() } // existentialsome no Body do SwiftUI
O SwiftUI usa some View para que o corpo de cada visualização retorne um único tipo consistente sem expor os detalhes do layout.
struct ContentView: View {
var body: some View {
Text("Hello, World!")
}
}Parâmetros opacos com some
O Swift 5.7+ permite some Protocol em posições de parâmetros como uma abreviação sintática para restrições genéricas.
func printArea(_ shape: some Shape) {
print(shape.area)
}
printArea(Circle())Genéricos invertidos
Um parâmetro opaco some P equivale a . O compilador infere T no local da chamada.
func doubled(_ value: some Numeric) -> some Numeric {
value * 2
}Restrições em some
Você pode combinar protocolos com tipos opacos, assim como faz com genéricos.
func process(_ item: some Codable & Hashable) {
let hash = item.hashValue
print(hash)
}Retornando tipos diferentes
Ao contrário dos existenciais, você não pode retornar tipos diferentes em conformidade a partir de ramificações diferentes com tipos opacos.
// This would NOT compile:
// func shape(_ big: Bool) -> some Shape {
// big ? Circle() : Square() // ERROR: different types
// }Tipos opacos em protocolos
Protocolos com tipos associados tornam-se mais simples de usar como tipos de retorno com some.
protocol Buildable { associatedtype Output; func build() -> Output }
func build(_ b: some Buildable) -> some Any {
b.build()
}Quando escolher some
Prefira some quando retornar um único tipo consistente e quiser preservar sua identidade. Use any quando precisar de coleções heterogêneas.
var shapes: [any Shape] = [Circle(), Circle()]
let single: some Shape = Circle()Verificação rápida
O que a palavra-chave some garante sobre um tipo de retorno?
Recapitulação da lição
some cria tipos de retorno opacos que ocultam o tipo concreto enquanto preservam a identidade do tipo. some View do SwiftUI é o exemplo clássico. Use some para retornos de um único tipo e any para coleções heterogêneas.
Aprenda Swift com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 122
- Aulas
- 409
Perguntas Frequentes
A aula “Tipos opacos com a palavra-chave some” é grátis?
Sim — o texto completo de “Tipos opacos com a palavra-chave some” é 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 “Tipos opacos com a palavra-chave some”?
Retorne tipos opacos de funções para preservar a identidade do tipo sem expô-la. 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 2 de 4.
Quanto tempo leva a aula “Tipos opacos com a palavra-chave some”?
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
- Restrições genéricas e cláusulas where
- Tipos opacos com a palavra-chave some
- Existenciais com any e apagamento de tipo
- Tipos associados principais e erros tipados