let i run: przekształcanie i zakres
Stosuj let do transformacji bezpiecznych dla null oraz run do lokalnych obliczeń.
let i run: przekształcanie i zakres 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.
let i run
let używa it jako odbiorcy, a run używa this. Obie funkcje zwracają ostatnie wyrażenie lambdy. Należy wybrać funkcję w zależności od tego, czy preferowane są jawne odwołania.
Podstawy let
let przekazuje odbiorcę do lambdy jako it. Jest przydatne do przekształcania wartości lub ograniczania zakresu zmiennej.
fun main() {
val length = "Kotlin".let { it.length }
println(length) // 6
}let z wartością nullable
Klasyczny idiom: obj?.let { ... } uruchamia blok tylko wtedy, gdy obj nie ma wartości null.
fun main() {
val name: String? = "Ada"
val upper = name?.let { it.uppercase() } ?: "(unknown)"
println(upper) // ADA
}let do przekształcania
Należy użyć let, aby przekształcić wartość i zachować czytelność łańcucha wywołań.
fun main() {
val numStr = "42"
val doubled = numStr.let { it.toInt() }.let { it * 2 }
println(doubled) // 84
}let do ograniczania zakresu
Należy ograniczyć widoczność zmiennej do niewielkiego bloku — to przejrzysty sposób na uniknięcie zanieczyszczania przestrzeni nazw.
fun main() {
val username = readUserConfig().let { config ->
config.uppercase()
}
println(username)
}
fun readUserConfig() = "ada"Podstawy run
run działa podobnie jak let, ale zamiast it używa this. Jest przydatne, gdy trzeba wywołać kilku członków odbiorcy.
class Rect(val w: Int, val h: Int) {
fun area() = w * h
fun perimeter() = 2 * (w + h)
}
fun main() {
val description = Rect(3, 4).run {
"area=${area()}, perimeter=${perimeter()}"
}
println(description)
}run jako niezależny blok
run { ... } (bez odbiorcy) uruchamia blok i zwraca jego wynik — przydaje się do grupowania obliczeń.
fun main() {
val result = run {
val a = 10
val b = 20
a + b
}
println(result) // 30
}let a run według stylu odbiorcy
Jeśli ciało lambdy odwołuje się do wielu członków odbiorcy, run pozwala uniknąć prefiksu it.. Jeśli odbiorca jest używany tylko raz lub dwa razy, let pozostaje czytelne.
class User(val name: String, val email: String, val age: Int)
fun main() {
val user = User("Ada", "ada@x.io", 35)
// run: this-style
val s1 = user.run { "$name <$email> age $age" }
// let: it-style
val s2 = user.let { "${it.name} <${it.email}> age ${it.age}" }
println(s1); println(s2)
}Łączenie let i Elvis
Połączenie ?.let { ... } i ?: to zaawansowany wzorzec bezpiecznego potoku obsługującego wartości null.
fun main() {
val raw: String? = " hello "
val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
println(cleaned) // HELLO
}run z konfiguracją i wynikiem
W jednym bloku można połączyć konfigurację (za pomocą this) ze zwracaną wartością.
class Connection {
var host: String = ""
fun connect() = "connected to $host"
}
fun main() {
val status = Connection().run {
host = "localhost"
connect()
}
println(status)
}Antywzorzec: nadmierne używanie let
Nie należy opakowywać prostych kontroli wartości null w let, gdy czytelniejsza jest instrukcja if. Funkcji zakresu należy używać tam, gdzie rzeczywiście pomagają.
fun main() {
val name: String? = "Ada"
// OK
name?.let { println(it.length) }
// Equivalent and clearer for trivial cases:
if (name != null) println(name.length)
}Szybkie sprawdzenie
Która funkcja zakresu przekazuje odbiorcę do lambdy jako it i jednocześnie zwraca wynik lambdy?
Podsumowanie
let używa it i zwraca wynik lambdy — świetnie nadaje się do bezpiecznych transformacji obsługujących wartości null oraz ograniczania zakresu. run używa this i zwraca wynik lambdy — świetnie nadaje się do wywoływania wielu członków odbiorcy. Obie funkcje doskonale sprawdzają się w kodzie opartym na wyrażeniach.
Często zadawane pytania
Czy lekcja „let i run: przekształcanie i zakres” jest bezpłatna?
Tak — pełny tekst „let i run: przekształcanie i zakres” 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 „let i run: przekształcanie i zakres”?
Stosuj let do transformacji bezpiecznych dla null oraz run do lokalnych obliczeń. Ć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 „let i run: przekształcanie i zakres”?
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
- apply i with: konfiguracja i zwracanie
- let i run: przekształcanie i zakres
- also: efekty uboczne bez zmiany odbiorcy
- Wybór właściwej funkcji zakresu: przewodnik decyzyjny