Conversão de tipos: is, as?, as! e as
Verifique e converta tipos com segurança usando os operadores de conversão do Swift.
Conversão de tipos: is, as?, as! e as é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 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 é conversão de tipos?
A conversão de tipos permite verificar ou converter uma instância para outra classe na hierarquia dela.
class Animal { var name: String = "Animal" }
class Dog: Animal { func bark() { print("Woof") } }
let a: Animal = Dog()
print(a.name)O operador de verificação de tipo
Use is para verificar se uma instância pertence a determinada subclasse.
let a: Animal = Dog()
if a is Dog {
print("It's a dog")
}Conversão descendente opcional
as? tenta fazer uma conversão descendente e retorna um valor Opcional. Se falhar, o resultado será nulo.
let a: Animal = Dog()
if let dog = a as? Dog {
dog.bark()
} else {
print("Not a dog")
}Conversão descendente forçada
as! força a conversão para um subtipo. Use-o somente quando tiver certeza do tipo; caso contrário, o aplicativo será encerrado com um erro.
let a: Animal = Dog()
let dog = a as! Dog
dog.bark()Conversão ascendente
A conversão de uma subclasse para uma superclasse sempre é bem-sucedida e usa as.
let dog = Dog()
let animal = dog as Animal
print(animal.name)Conversão de tipos em coleções
Matrizes de tipos mistos tipadas como [Any] exigem uma conversão para que seja possível usar um comportamento específico.
let items: [Any] = [1, "hello", Dog()]
for item in items {
if let d = item as? Dog { d.bark() }
if let s = item as? String { print(s) }
}Conversão de tipos com AnyObject
AnyObject representa qualquer instância de classe. Use as? para extrair o tipo concreto.
let objs: [AnyObject] = [Dog(), Dog()]
for obj in objs {
if let d = obj as? Dog { d.bark() }
}Conversão de tipos de protocolos
É possível converter entre tipos de protocolo e tipos concretos usando os mesmos operadores.
protocol Runnable { func run() }
class Cat: Animal, Runnable { func run() { print("Cat runs") } }
let r: Runnable = Cat()
if let cat = r as? Cat { print(cat.name) }Correspondência de padrões de tipo em uma seleção
A instrução de seleção do Swift pode fazer correspondência por tipo usando o padrão is.
let value: Any = 42
switch value {
case is Int: print("Integer")
case is String: print("String")
default: print("Other")
}Padrões de seleção com conversão opcional
Combine uma seleção com let x as Type para verificar e vincular o valor em uma única etapa.
let value: Any = "Swift"
switch value {
case let s as String: print("String: \(s)")
case let i as Int: print("Int: \(i)")
default: break
}Práticas recomendadas para conversões seguras
Sempre prefira as? a as! para evitar encerramentos inesperados no código de produção.
func describe(_ obj: AnyObject) {
if let dog = obj as? Dog { dog.bark(); return }
print("Unknown type")
}Verificação rápida
Qual operador retorna um valor Opcional ao fazer uma conversão descendente?
Resumo da lição
Conversão de tipos no Swift: is verifica o tipo, as? faz uma conversão descendente segura para um Opcional, as! força a conversão descendente e as faz a conversão ascendente. Prefira as? no código de produção.
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 “Conversão de tipos: is, as?, as! e as” é grátis?
Sim — o texto completo de “Conversão de tipos: is, as?, as! e as” é 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 “Conversão de tipos: is, as?, as! e as”?
Verifique e converta tipos com segurança usando os operadores de conversão do Swift. 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 3 de 4.
Quanto tempo leva a aula “Conversão de tipos: is, as?, as! e as”?
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
- Herança de classes e a palavra-chave super
- override, final e prevenção de subclasses
- Conversão de tipos: is, as?, as! e as
- Desinicializadores e ciclo de vida da memória