Funkcje infiksowe
Czytelne wywołania funkcji
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ą
infixi wywołuj jakoa 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,untilidownToto 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)
}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.