Swift Academy · Aula

Conversão de tipos: is, as?, as! e as

Verifique e converta tipos com segurança usando os operadores de conversão do Swift.

Aula 3 de 413 etapas

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.

Grátis para começar

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

  1. Herança de classes e a palavra-chave super
  2. override, final e prevenção de subclasses
  3. Conversão de tipos: is, as?, as! e as
  4. Desinicializadores e ciclo de vida da memória
← Voltar para Swift Academy