Kotlin Academy · Lekcja

Funkcje infiksowe

Czytelne wywołania funkcji

Lekcja 1 z 413 kroki

Funkcje infiksowe to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Czym jest funkcja infiksowa?

Funkcję infiksową można wywołać bez kropki i nawiasów: a func b. Oznacza się ją słowem kluczowym infix.

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

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

Zasady funkcji infiksowych

Funkcja infiksowa musi być funkcją składową lub rozszerzającą, przyjmować dokładnie jeden parametr, a ten parametr nie może być oznaczony jako vararg ani mieć wartości domyślnej.

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

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

Wbudowane funkcje infiksowe

Wiele funkcji standardowych ma postać infiksową: to (tworzy obiekt Pair), and, or, shl, a także until, downTo i step dla zakresów.

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

Tworzenie obiektu Pair za pomocą to

Znana składnia mapy "a" to 1 jest po prostu wywołaniem infiksowej funkcji to, która zwraca obiekt Pair.

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

Funkcja infiksowa jako funkcja składowa

Funkcje infiksowe mogą być funkcjami składowymi, dzięki czemu można tworzyć płynne wyrażenia domenowe.

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)
}

Najpierw czytelność

Składnia infiksowa sprawdza się najlepiej, gdy wywołanie brzmi jak zdanie. Wybieraj nazwy przypominające czasowniki, aby zapis a name b brzmiał naturalnie.

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

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

Priorytet wywołań infiksowych

Wywołania infiksowe mają niższy priorytet niż działania arytmetyczne, ale wyższy niż porównania. Przy łączeniu różnych operacji dodawaj nawiasy, aby zachować czytelność.

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

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

Odbiorca this

W rozszerzeniu infiksowym this jest lewym operandem, a parametr — prawym operandem.

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

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

Łączenie wywołań infiksowych

Wywołania infiksowe są lewostronnie łączne, więc można je łączyć w łańcuchy.

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

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

Unikaj nadużywania składni infiksowej

Składnia infiksowa usuwa kropki i nawiasy, co może pogorszyć czytelność w przypadku nieoczywistych operacji. Używaj jej tylko wtedy, gdy zapis rzeczywiście staje się czytelniejszy.

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

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

Przykład płynnej składni

Składnia infiksowa może sprawić, że asercje lub konstruktory będą niemal przypominać język naturalny.

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

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

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat funkcji infiksowych.

Podsumowanie

Opanowali Państwo funkcje infiksowe:

  • Oznaczaj je za pomocą infix i wywołuj jako a func b.
  • Muszą być funkcjami składowymi lub rozszerzającymi z jednym parametrem, który nie jest vararg i nie ma wartości domyślnej.
  • to, until i downTo to wbudowane funkcje infiksowe.
  • Używaj ich tam, gdzie rzeczywiście poprawiają czytelność.
infix fun Int.add(o: Int) = this + o

fun main() {
    println(4 add 6)
}
Bezpłatny start

Ucz się Kotlin dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
51
Lekcje
203

Często zadawane pytania

Czy lekcja „Funkcje infiksowe” jest bezpłatna?

Tak — pełny tekst „Funkcje infiksowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje infiksowe”?

Czytelne wywołania funkcji Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?

Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Funkcje infiksowe”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?

Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Funkcje infiksowe
  2. Budowanie API podobnych do DSL
  3. Funkcje tailrec
  4. Kiedy używać poszczególnych rozwiązań
← Powrót do Kotlin Academy