Kotlin Academy · Lektion

Infix-funktioner

Læsbare funktionskald

Lektion 1 af 413 trin

Infix-funktioner er en gratis Kotlin Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Kotlin Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Kotlin Academy-kurset indeholder 4 lektioner i alt.

Hvad er en infix-funktion?

En infix-funktion kan kaldes uden punktum eller parenteser: a func b. Markér den med nøgleordet infix.

infix fun Int.times2(factor: Int) = this * factor

fun main() {
    println(3 times2 4)
}

Regler for infix

En infix-funktion skal være en medlems- eller udvidelsesfunktion, tage præcis én parameter, og parameteren må hverken være vararg eller have en standardværdi.

infix fun Int.plusBy(other: Int) = this + other

fun main() {
    println(5 plusBy 7)
}

Indbyggede infix-funktioner

Mange standardfunktioner er infix-funktioner: to (opbygger en Pair), and, or, shl samt until, downTo og step til intervaller.

fun main() {
    val pair = "key" to 42
    println(pair)
    for (i in 1 until 4) print(i)
}

Opbygning af en Pair med to

Den velkendte mapsyntaks "a" to 1 er blot infix-funktionen to, der returnerer en Pair.

fun main() {
    val map = mapOf(1 to "one", 2 to "two")
    println(map[2])
}

Infix som medlemsfunktion

Infix-funktioner kan være medlemmer, så du kan skrive flydende domæneudtryk.

class Money(val cents: Int) {
    infix fun add(o: Money) = Money(cents + o.cents)
}

fun main() {
    val total = Money(100) add Money(50)
    println(total.cents)
}

Læsbart sprog først

Infix fungerer bedst, når kaldet læses som en sætning. Vælg navne, der minder om verber, så a name b flyder naturligt.

infix fun String.repeatedTimes(n: Int) = this.repeat(n)

fun main() {
    println("ab" repeatedTimes 3)
}

Præcedens for infix-kald

Infix-kald har lavere præcedens end aritmetik, men højere end sammenligninger. Tilføj parenteser, når du blander dem, så udtrykket forbliver tydeligt.

infix fun Int.combine(o: Int) = this * 10 + o

fun main() {
    println(1 combine 2 + 3)
}

this som modtager

I en infix-udvidelse er this venstre operand, og parameteren er højre operand.

infix fun Int.minus2(o: Int) = this - o

fun main() {
    println(10 minus2 3)
}

Kædning af infix-kald

Infix-kald er venstreassociative, så du kan kæde dem sammen.

infix fun Int.then(o: Int) = this + o

fun main() {
    println(1 then 2 then 3)
}

Undgå overdreven brug af infix

Infix fjerner punktummer og parenteser, hvilket kan gøre uklare operationer sværere at forstå. Brug det kun, hvor resultatet bliver lettere at læse.

infix fun Int.power(exp: Int): Int {
    var r = 1
    repeat(exp) { r *= this }
    return r
}

fun main() {
    println(2 power 5)
}

Et flydende eksempel

Infix kan få assertioner eller builder-kode til næsten at ligne engelsk.

infix fun String.shouldStartWith(prefix: String) =
    this.startsWith(prefix)

fun main() {
    println("kotlin" shouldStartWith "kot")
}

Hurtig kontrol

Test din forståelse af infix-funktioner.

Opsummering

Du har lært om infix-funktioner:

  • Markér dem med infix, og kald dem som a func b.
  • De skal være medlems- eller udvidelsesfunktioner med én parameter, der hverken er vararg eller har en standardværdi.
  • to, until og downTo er indbyggede infix-funktioner.
  • Brug dem, hvor de reelt forbedrer læsbarheden.
infix fun Int.add(o: Int) = this + o

fun main() {
    println(4 add 6)
}
Gratis at komme i gang

Lær Kotlin med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
51
Lektioner
203

Ofte stillede spørgsmål

Er lektionen “Infix-funktioner” gratis?

Ja — alle 3 lektioner i læringssporet Kotlin Academy, inklusive “Infix-funktioner”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Kotlin Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Infix-funktioner”?

Læsbare funktionskald Du øver dig i Kotlin Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Kotlin Academy?

Der kræves ingen tidligere erfaring. Kotlin Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Infix-funktioner”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Kotlin Academy-lektion?

Ja. Alle Kotlin Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Infix-funktioner
  2. Opbygning af DSL-lignende API'er
  3. tailrec-funktioner
  4. Hvornår De skal bruge hver af dem
← Tilbage til Kotlin Academy