Zestawy rozmówBlog

Twoja wymarzona praca? Lets Git IT.
Interaktywna platforma przygotowująca do rozmów technicznych dla nowoczesnych programistów.

XGitHub

Platforma

  • Kategorie

Zasoby

  • Blog
  • O aplikacji
  • FAQ
  • Sugestie

Prawne

  • Polityka prywatności
  • Regulamin

© 2026 LetsGit.IT. Wszelkie prawa zastrzeżone.

LetsGit.IT/Kategorie/Kotlin
Kotlinmedium

Funkcje zakresu (`let`, `apply`, `also`, `run`, `with`) — czym się różnią?

Tagi
#scope-functions#let#apply#also
Wróć do kategoriiPrzejdź do quizu

Odpowiedź

Różnią się głównie odbiorcą (`this` vs `it`) i wartością zwracaną (obiekt vs wynik lambdy). Przykład: `apply` konfiguruje i zwraca obiekt; `let` przekształca i zwraca wynik lambdy.

val user = User("Ada")
  .apply { active = true } // returns receiver

val nameLen = user.name.let { it.length } // returns lambda result

Odpowiedź zaawansowana

Głębiej

Funkcje zakresu sprowadzają się do dwóch decyzji:

  • Czy kontekst ma być jako `this` (receiver) czy jako `it` (argument)?
  • Czy zwracasz obiekt, czy wynik lambdy?

Szybka ściąga:

  • `let`: `it`, zwraca wynik lambdy (świetne z safe-call).
  • `apply`: `this`, zwraca receiver (konfiguracja/builder).
  • `also`: `it`, zwraca receiver (side-effecty, np. logowanie).
  • `run`: `this`, zwraca wynik lambdy (obliczenia na obiekcie).
  • `with(x)`: jak `x.run { ... }`, tylko jako funkcja.

Typowe pułapki

  • Nadużywanie i spadek czytelności.
  • Użycie `apply` gdy chcesz wynik lambdy (a ono zwraca receiver).