Conversione dei tipi: is, as?, as! e as
Verificare e convertire i tipi in sicurezza con gli operatori di casting di Swift.
Conversione dei tipi: is, as?, as! e as è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Che cos'è il type casting?
Il type casting consente di verificare o convertire un'istanza in una classe diversa all'interno della relativa gerarchia.
class Animal { var name: String = "Animal" }
class Dog: Animal { func bark() { print("Woof") } }
let a: Animal = Dog()
print(a.name)L'operatore is
Utilizzi is per verificare se un'istanza appartiene a una determinata sottoclasse.
let a: Animal = Dog()
if a is Dog {
print("It's a dog")
}Downcasting con as?
as? tenta un downcast e restituisce un Optional. Se l'operazione non riesce, il risultato è nil.
let a: Animal = Dog()
if let dog = a as? Dog {
dog.bark()
} else {
print("Not a dog")
}Downcasting con as!
as! esegue un force cast verso un sottotipo. Lo utilizzi solo quando è certo del tipo; in caso contrario, causa un arresto anomalo.
let a: Animal = Dog()
let dog = a as! Dog
dog.bark()Upcasting con as
Il passaggio da una sottoclasse a una superclasse riesce sempre e usa as.
let dog = Dog()
let animal = dog as Animal
print(animal.name)Type casting nelle collezioni
Gli array eterogenei tipizzati come [Any] richiedono il casting per utilizzare un comportamento specifico.
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) }
}Type casting con AnyObject
AnyObject rappresenta qualsiasi istanza di classe. Utilizzi as? per estrarre il tipo concreto.
let objs: [AnyObject] = [Dog(), Dog()]
for obj in objs {
if let d = obj as? Dog { d.bark() }
}Casting dei tipi protocollo
È possibile eseguire il casting tra tipi protocollo e tipi concreti usando gli stessi operatori.
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) }Pattern matching con is in switch
L'istruzione switch di Swift può verificare il tipo usando il pattern is.
let value: Any = 42
switch value {
case is Int: print("Integer")
case is String: print("String")
default: print("Other")
}Pattern switch con as?
Combini switch con let x as Type per verificare e associare un valore in un'unica operazione.
let value: Any = "Swift"
switch value {
case let s as String: print("String: \(s)")
case let i as Int: print("Int: \(i)")
default: break
}Buone pratiche per il casting sicuro
Preferisca sempre as? a as! per evitare arresti anomali a runtime nel codice di produzione.
func describe(_ obj: AnyObject) {
if let dog = obj as? Dog { dog.bark(); return }
print("Unknown type")
}Verifica rapida
Quale operatore restituisce un Optional durante un downcast?
Riepilogo della lezione
Il type casting in Swift: is verifica il tipo, as? esegue un downcast sicuro verso un Optional, as! esegue un force downcast, mentre as esegue un upcast. Preferisca as? nel codice di produzione.
Impara Swift con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 122
- Lezioni
- 409
Domande Frequenti
La lezione «Conversione dei tipi: is, as?, as! e as» è gratuita?
Sì — il testo completo di «Conversione dei tipi: is, as?, as! e as» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Conversione dei tipi: is, as?, as! e as»?
Verificare e convertire i tipi in sicurezza con gli operatori di casting di Swift. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Conversione dei tipi: is, as?, as! e as»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Ereditarietà delle classi e parola chiave super
- override, final e prevenzione delle sottoclassi
- Conversione dei tipi: is, as?, as! e as
- Deinizializzatori e ciclo di vita della memoria