0Pricing
Kotlin Academy · Lekcja

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:

  • apply używa this i najlepiej nadaje się do konfigurowania właściwości.
  • also używa it i 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:

  • apply używa this do konfigurowania obiektu.
  • also używa it do 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

  1. let i run
  2. apply i also
  3. with
  4. Wybór właściwej funkcji
← Powrót do Kotlin Academy