Tyyppimuunnokset: is, as?, as! ja as
Tyyppien turvallinen tarkistaminen ja muuntaminen Swiftin muunnosoperaattoreilla.
Tyyppimuunnokset: is, as?, as! ja as on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä tyyppimuunnokset ovat?
Tyyppimuunnoksilla voitte tarkistaa instanssin tyypin tai muuntaa sen hierarkiassa toiseksi luokaksi.
class Animal { var name: String = "Animal" }
class Dog: Animal { func bark() { print("Woof") } }
let a: Animal = Dog()
print(a.name)is-operaattori
Käyttäkää is-operaattoria tarkistaaksenne, onko instanssi tietyn aliluokan tyyppiä.
let a: Animal = Dog()
if a is Dog {
print("It's a dog")
}Alaspäin muuntaminen as?-operaattorilla
as? yrittää muuntaa tyypin alityypiksi ja palauttaa Optional-arvon. Jos muunnos epäonnistuu, tulos on nil.
let a: Animal = Dog()
if let dog = a as? Dog {
dog.bark()
} else {
print("Not a dog")
}Alaspäin muuntaminen as!-operaattorilla
as! tekee pakotetun muunnoksen alityypiksi. Käyttäkää sitä vain, kun olette varmoja tyypistä; väärä tyyppi aiheuttaa kaatumisen.
let a: Animal = Dog()
let dog = a as! Dog
dog.bark()Ylöspäin muuntaminen as-operaattorilla
Aliluokasta yliluokaksi muuntaminen onnistuu aina, ja siinä käytetään as-operaattoria.
let dog = Dog()
let animal = dog as Animal
print(animal.name)Tyyppimuunnokset kokoelmissa
[Any]-tyyppisissä sekoitetun tyypin taulukoissa tarvitaan tyyppimuunnoksia tietyn toiminnallisuuden käyttämiseen.
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) }
}Tyyppimuunnokset AnyObject-tyypin kanssa
AnyObject edustaa mitä tahansa luokan instanssia. Käyttäkää as?-operaattoria konkreettisen tyypin poimimiseen.
let objs: [AnyObject] = [Dog(), Dog()]
for obj in objs {
if let d = obj as? Dog { d.bark() }
}Protokollatyyppien muuntaminen
Voitte muuntaa protokollatyyppien ja konkreettisten tyyppien välillä samoilla operaattoreilla.
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) }Kuviovertailu is-operaattorilla switch-lauseessa
Swiftin switch-lause voi vertailla tyyppiä is-kuvion avulla.
let value: Any = 42
switch value {
case is Int: print("Integer")
case is String: print("String")
default: print("Other")
}as?-operaattori switch-kuvioissa
Yhdistäkää switch ja let x as Type tarkistaaksenne tyypin ja sitoaksenne arvon samalla kertaa.
let value: Any = "Swift"
switch value {
case let s as String: print("String: \(s)")
case let i as Int: print("Int: \(i)")
default: break
}Turvallisen tyyppimuunnoksen parhaat käytännöt
Suosikaa aina as?-operaattoria as!-operaattorin sijaan, jotta tuotantokoodissa vältetään ajonaikaiset kaatumiset.
func describe(_ obj: AnyObject) {
if let dog = obj as? Dog { dog.bark(); return }
print("Unknown type")
}Pikatarkistus
Mikä operaattori palauttaa Optional-arvon alaspäin muuntamisen yhteydessä?
Oppitunnin kertaus
Swiftin tyyppimuunnokset: is tarkistaa tyypin, as? muuntaa turvallisesti alaspäin Optional-arvoksi, as! tekee pakotetun alaspäin muunnoksen ja as muuntaa ylöspäin. Suosikaa tuotantokoodissa as?-operaattoria.
Opi Swift tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 122
- Oppitunnit
- 409
Usein kysytyt kysymykset
Onko oppitunti ”Tyyppimuunnokset: is, as?, as! ja as” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tyyppimuunnokset: is, as?, as! ja as”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tyyppimuunnokset: is, as?, as! ja as”?
Tyyppien turvallinen tarkistaminen ja muuntaminen Swiftin muunnosoperaattoreilla. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Tyyppimuunnokset: is, as?, as! ja as”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?
Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Luokkaperintä ja super-avainsana
- override, final ja aliluokkien estäminen
- Tyyppimuunnokset: is, as?, as! ja as
- Deinitialisoijat ja muistin elinkaari