Kotlin Academy · Oppitunti

Tyyppialiaset

Nimeä monimutkaisia tyyppejä

Oppitunti 1/413 vaihetta

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 typealias ylä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.

Aloita maksutta

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

  1. Tyyppialiaset
  2. Inline-arvoluokat
  3. Käyttötapaukset
  4. Rajoitukset
← Takaisin: Kotlin Academy