Tyyppialiaset
Nimeä monimutkaisia tyyppejä
Tyyppialiaset on ilmainen Kotlin Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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 Kotlin Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on tyyppialias?
Tyyppialias antaa olemassa olevalle tyypille uuden nimen. Se ei tuo käyttöön uutta tyyppiä, vaan on pelkästään luettavuutta parantava työkalu, joka ratkaistaan käännösaikana.
Se määritellään avainsanalla typealias.
typealias Name = String
fun main() {
val n: Name = "Alice"
println(n)
}Funktiotyyppien nimeäminen
Funktiotyypit voivat olla vaikeaselkoisia. Alias tekee allekirjoituksista paljon helpompia lukea.
typealias Handler = (String) -> Unit
fun register(h: Handler) {
h("event fired")
}
fun main() {
register { msg -> println(msg) }
}Geneeristen tyyppien nimeäminen
Syvästi sisäkkäiset geneeriset tyypit, kuten Map<String, List<Int>>, ovat helpompia lukea aliaksen avulla.
typealias ScoreBoard = Map<String, List<Int>>
fun main() {
val board: ScoreBoard = mapOf("team1" to listOf(10, 20))
println(board)
}Aliakset ovat läpinäkyviä
Koska alias on sama tyyppi, arvot ovat täysin keskenään vaihdettavissa. Tyyppejä Name ja String voi yhdistellä vapaasti ilman muunnoksia.
typealias Name = String
fun shout(s: String) = s.uppercase()
fun main() {
val n: Name = "bob"
println(shout(n))
}Parametrisoidut aliakset
Tyyppialias voi sisältää omia tyyppiparametrejaan, jotka välitetään sen perustana olevalle tyypille.
typealias Pairs<T> = List<Pair<T, T>>
fun main() {
val data: Pairs<Int> = listOf(1 to 2, 3 to 4)
println(data)
}Sisäkkäisten luokkien aliakset
Pitkälle sisäkkäisen tai sisäisen luokan polulle voi antaa lyhyen aliaksen, mikä vähentää import-lausekkeiden määrää ja koodin sekavuutta.
class Outer {
class Inner {
fun hello() = "inner hello"
}
}
typealias Shortcut = Outer.Inner
fun main() {
println(Shortcut().hello())
}Toimialueen luettavuuden parantaminen
Aliakset ilmaisevat tarkoituksen. typealias UserId = Int dokumentoi, että kokonaisluku edustaa käyttäjän tunnistetta, vaikka kääntäjä käsittelee sitä edelleen tyyppinä Int.
typealias UserId = Int
typealias Email = String
fun notify(id: UserId, to: Email) {
println("Notify user " + id + " at " + to)
}
fun main() {
notify(42, "a@b.com")
}Tyyppiturvallisuutta ei lisätä
Huomaa, että koska aliakset ovat läpinäkyviä, kääntäjä ei estä välittämästä UserId-arvoa tilanteessa, jossa odotetaan eri Int-aliasta. Aliakset dokumentoivat, mutta eivät pakota sääntöjä.
typealias UserId = Int
typealias OrderId = Int
fun process(order: OrderId) = println("order " + order)
fun main() {
val user: UserId = 5
process(user) // compiles fine — both are Int
}Vain ylätasolla
Tyyppialiakset on määritettävä tiedoston ylätasolla. Niitä ei voi määrittää funktioiden tai luokkien sisällä. Sijoita ne aiheeseen liittyvän koodin lähelle tai erilliseen tiedostoon.
typealias Callback = () -> Unit
fun run(cb: Callback) = cb()
fun main() {
run { println("done") }
}Milloin aliaksia kannattaa käyttää
Käytä tyyppialiaksia, kun:
- Funktiotyyppi tai geneerinen tyyppi on pitkä ja toistuu
- Haluat primitiivityypeille itsensä dokumentoivat nimet
- Tarvitset lyhyen nimen sisäkkäiselle tyypille
Kun tarvitset todellista tyyppiturvallisuutta, käytä arvoluokkaa.
Alias vai arvoluokka
Alias on sama tyyppi uudella nimellä — tyyppiturvallisuutta ei ole. Arvoluokka on erillinen tyyppi, joka estää arvojen sekoittamisen. Seuraavassa oppitunnissa käsitellään arvoluokkia.
Pikatarkistus
Testaa, miten hyvin ymmärrät tyyppialiakset.
Kertaus
Opit käyttämään tyyppialiaksia:
- Määritetään avainsanalla
typealiasylätasolla - Vain uusi nimi, täysin läpinäkyvä
- Sopivat erinomaisesti funktiotyypeille, geneerisille tyypeille ja luettavuuden parantamiseen
- Eivät lisää tyyppiturvallisuutta
Seuraavaksi käsitellään inline-arvoluokkia, jotka mahdollistavat kääreen ilman lisäkustannuksia.
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
- 51
- Oppitunnit
- 203
Usein kysytyt kysymykset
Onko oppitunti ”Tyyppialiaset” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Kotlin Academy-oppimispolun 3 oppituntia, myös oppitunnin “Tyyppialiaset”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Kotlin Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tyyppialiaset”?
Nimeä monimutkaisia tyyppejä Harjoittelet Kotlin Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Kotlin Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Tyyppialiaset”-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ä Kotlin Academy-oppitunnilla?
Kyllä. Jokainen Kotlin 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
- Tyyppialiaset
- Inline-arvoluokat
- Käyttötapaukset
- Rajoitukset