Infix-funktioner
Læsbare funktionskald
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 soma func b. - De skal være medlems- eller udvidelsesfunktioner med én parameter, der hverken er vararg eller har en standardværdi.
to,untilogdownToer 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)
}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.