apply i also
Konfiguruj i wywołuj efekty uboczne
apply i also to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 2 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.
Konfigurowanie obiektów
apply i also to funkcje zakresowe, które zwracają sam obiekt, a nie wynik lambdy. Dzięki temu idealnie nadają się do konfiguracji i łączenia wywołań.
Funkcja apply
apply wykonuje blok, w którym obiekt jest dostępny jako this, i zwraca obiekt. Jest to klasyczne narzędzie do inicjowania obiektu po jego utworzeniu.
fun main() {
val builder = StringBuilder().apply {
append("Hello")
append(", ")
append("World")
}
println(builder.toString())
}Dlaczego apply zwraca obiekt
Ponieważ apply zwraca odbiorcę, można bezpośrednio przypisać skonfigurowany obiekt do zmiennej.
data class Person(var name: String = "", var age: Int = 0)
fun main() {
val p = Person().apply {
name = "Alice"
age = 30
}
println(p)
}apply używa this
Wewnątrz apply obiekt jest odbiorcą, dlatego można uzyskiwać dostęp do jego właściwości bezpośrednio, bez prefiksu.
data class Config(var host: String = "", var port: Int = 0)
fun main() {
val config = Config().apply {
host = "localhost"
port = 8080
}
println("${config.host}:${config.port}")
}Funkcja also
also wykonuje blok, w którym obiekt jest dostępny jako it, i zwraca obiekt. Służy do efektów ubocznych, takich jak rejestrowanie lub walidacja, które nie zmieniają obiektu.
fun main() {
val numbers = mutableListOf(1, 2, 3)
numbers
.also { println("Before: $it") }
.add(4)
println("After: $numbers")
}also używa it
Ponieważ also udostępnia obiekt jako it, jest wygodne, gdy nadal chcą Państwo odwoływać się do zewnętrznego this albo po prostu zachować jawne odwołanie.
fun main() {
val value = 42
.also { println("Logging value: $it") }
println(value)
}apply a also
Różnica przypomina różnicę między run i let:
applyużywathisi najlepiej nadaje się do konfigurowania właściwości.alsoużywaiti najlepiej nadaje się do efektów ubocznych dotyczących obiektu.
Obie funkcje zwracają oryginalny obiekt.
data class Box(var size: Int = 0)
fun main() {
val box = Box()
.apply { size = 5 }
.also { println("Created box with size ${it.size}") }
println(box)
}Łączenie apply i also
Ponieważ obie funkcje zwracają obiekt, można je łączyć, aby najpierw go skonfigurować, a następnie wykonać efekty uboczne w płynnym potoku operacji.
data class Account(var owner: String = "", var balance: Int = 0)
fun main() {
val account = Account()
.apply { owner = "Sam" }
.apply { balance = 100 }
.also { println("New account: $it") }
println(account.balance)
}also do walidacji
Używaj also, aby wstawić sprawdzenie w środku łańcucha bez przerywania jego działania.
fun main() {
val result = listOf(1, 2, 3, 4)
.filter { it % 2 == 0 }
.also { check(it.isNotEmpty()) { "No even numbers" } }
println(result)
}Zwracanie obiektu umożliwia tworzenie potoków
Wspólną cechą apply i also jest to, że nigdy nie przerywają łańcucha, ponieważ zawsze zwracają ten sam obiekt, od którego rozpoczęto.
fun main() {
val text = StringBuilder()
.apply { append("a") }
.also { it.append("b") }
.apply { append("c") }
println(text)
}Wybór apply lub also
Wybieraj apply, gdy inicjalizują Państwo obiekt lub modyfikują go za pomocą jego własnych składowych. Wybieraj also, gdy wykonują Państwo działanie wykorzystujące obiekt, ale nie konfigurujące go, na przykład rejestrowanie, debugowanie lub walidację.
Szybki test
Jaką wartość zwracają apply i also?
Podsumowanie
Poznali Państwo dwie funkcje zakresowe zwracające obiekt:
applyużywathisdo konfigurowania obiektu.alsoużywaitdo wykonywania efektów ubocznych dotyczących obiektu.
Obie funkcje zwracają obiekt, umożliwiając tworzenie przejrzystych łańcuchów wywołań. W następnej części pogrupują Państwo operacje za pomocą with.
Często zadawane pytania
Czy lekcja „apply i also” jest bezpłatna?
Tak — pełny tekst „apply i also” 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 „apply i also”?
Konfiguruj i wywołuj efekty uboczne Ć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 2 z 4.
Ile czasu zajmuje lekcja „apply i also”?
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
- let i run
- apply i also
- with
- Wybór właściwej funkcji