Turvalliset kutsut ja Elvis-operaattori
?.- ja ?:-operaattorit.
Turvalliset kutsut ja Elvis-operaattori on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.
if-tarkistuksia pidemmälle
Jokaisen nullable-arvon tarkistaminen if-ehdolla toimii, mutta koodista tulee nopeasti sanallista. Kotlin tarjoaa null-arvojen käsittelyyn suunniteltuja tiiviitä operaattoreita.
Tässä oppitunnissa käsitellään turvallisen kutsun operaattoria ?. ja Elvis-operaattoria ?:, joita tulette käyttämään jatkuvasti.
Turvallisen kutsun operaattori
?.-operaattori kutsuu metodia vain, jos arvo ei ole null. Jos arvo on null, koko lauseke saa arvokseen null eikä aiheuta kaatumista.
Se on turvallinen lyhennys if-not-null-kuviolle.
fun main() {
val name: String? = "Coddy"
println(name?.length)
}Turvallinen kutsu null-arvolle
Kun vastaanottaja on null, turvallinen kutsu oikaisee ja palauttaa null-arvon. Poikkeusta ei heitetä.
Tässä tulostettava tulos on sana null, ei kaatuminen.
fun main() {
val name: String? = null
println(name?.length) // prints: null
}Turvallisten kutsujen ketjuttaminen
Voitte ketjuttaa ?.-operaattoreita useiden vaiheiden yli. Jos jokin ketjun osa on null, koko ketju pysähtyy ja palauttaa null-arvon.
Tämä sopii erinomaisesti sisäkkäisten valinnaisten tietojen käsittelyyn.
class Address(val city: String?)
class User(val address: Address?)
fun cityOf(u: User?): String? {
return u?.address?.city
}Elvis-operaattori
Elvis-operaattori ?: antaa varaarvon, kun vasen puoli on null. Se on nimetty laulajan hiustyylin mukaan, jota symboli muistuttaa.
Lukekaa se näin: käyttäkää vasenta arvoa tai muussa tapauksessa oikeaa arvoa.
fun main() {
val name: String? = null
val shown = name ?: "Guest"
println(shown) // prints: Guest
}Elvis ja turvalliset kutsut
Turvallinen kutsu ja Elvis toimivat erinomaisesti yhdessä. Käyttäkää ?.-operaattoria arvon käsittelyyn ja ?:-operaattoria oletusarvon antamiseen, jos jokin arvo oli null.
Tämä kuvio muuttaa nullable-tuloksen varmasti ei-null-arvoksi.
fun main() {
val name: String? = null
val len: Int = name?.length ?: 0
println(len) // prints: 0
}Esimerkki oletuspituudesta
Tässä tuloksen tyyppi on tavallinen Int, ei Int?. Elvis-operaattori poisti null-kelpoisuuden.
Kun ?:-operaattorin jälkeen käytetään ei-null-varaarvoa, kääntäjä tietää, ettei arvo voi koskaan olla null.
val title: String? = "Kotlin"
val length: Int = title?.length ?: 0
// length is a non-null IntElvis aikaisessa paluussa
Koska return ja throw ovat Kotlinissa lausekkeita, voitte sijoittaa ne Elvis-operaattorin oikealle puolelle.
Tämä on selkeä tapa poistua aikaisin, kun vaadittu arvo puuttuu.
fun process(input: String?) {
val text = input ?: return
println(text.uppercase())
}Turvallinen kutsu ja let
Yhdistäkää ?. ja let, kun haluatte suorittaa lohkon vain, jos arvo ei ole null. Lohkon sisällä arvo on ei-null ja siihen viitataan nimellä it.
Tämä on yleinen tapa käsitellä valinnaisia arvoja.
fun main() {
val email: String? = "a@b.com"
email?.let {
println("Sending to " + it)
}
}Kaiken yhdistäminen
Lyhyt ohjelma voi näyttää, miten turvallinen kutsu ja Elvis toimivat yhdessä ystävällisen viestin tuottamiseksi.
Huomatkaa, ettei if-lausetta tarvita, mutta koodi ei silti ole vaarassa kaatua null-arvon vuoksi.
fun main() {
val nickname: String? = null
val display = nickname?.uppercase() ?: "ANONYMOUS"
println(display)
}Milloin mitäkin käytetään
Käyttäkää ?.-operaattoria, kun haluatte null-tuloksen kulkevan harmittomasti eteenpäin. Käyttäkää ?:-operaattoria, kun haluatte korvata null-arvon konkreettisella oletusarvolla.
Yhdessä ne kattavat valtaosan jokapäiväisestä null-arvojen käsittelystä ilman pitkiä tarkistuksia.
val count = list?.size ?: 0
// safe call reads size, Elvis defaults to 0Pikatarkistus
Testatkaa, miten hyvin hallitsette turvalliset kutsut ja Elvis-operaattorin.
Kertaus
Turvallinen kutsu ?. kutsuu jäsentä vain, jos vastaanottaja ei ole null; muussa tapauksessa tuloksena on null. Elvis-operaattori ?: korvaa null-arvon varaarvolla.
Niiden ketjuttaminen poistaa null-kelpoisuuden siististi. Seuraavaksi tutustutte tarkemmin näkyvyysaluetoimintoihin, kuten let- ja also-funktioihin.
Opi Kotlin 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
- 36
- Oppitunnit
- 152
Usein kysytyt kysymykset
Onko oppitunti ”Turvalliset kutsut ja Elvis-operaattori” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Turvalliset kutsut ja Elvis-operaattori”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Turvalliset kutsut ja Elvis-operaattori”?
?.- ja ?:-operaattorit. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Turvalliset kutsut ja Elvis-operaattori”-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ä Android Academy-oppitunnilla?
Kyllä. Jokainen Android 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
- Nullable- ja non-null-tyypit
- Turvalliset kutsut ja Elvis-operaattori
- let, also ja scope-funktiot
- NullPointerException-virheiden välttäminen