Kotlin Academy · leksjon

with

Gruppér operasjoner

Leksjon 3 av 413 trinn

with er en gratis leksjon i Kotlin Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Kotlin Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

with-funksjonen

with er en scope-funksjon som tar et objekt som et argument (ikke som receiver i et kall) og kjører en blokk med objektet som this. Den returnerer lambda-resultatet.

Grunnleggende bruk av with

De sender objektet til with og får tilgang til medlemmene direkte inne i blokken.

fun main() {
    val name = "Kotlin"
    val description = with(name) {
        "$this has $length characters"
    }
    println(description)
}

Gruppere flere operasjoner

with er spesielt nyttig når De må kalle flere metoder eller lese flere egenskaper på det samme objektet. Den gjør at De slipper å gjenta objektnavnet.

fun main() {
    val sb = StringBuilder()
    with(sb) {
        append("Line 1\n")
        append("Line 2\n")
        append("Line 3")
    }
    println(sb)
}

with bruker this

I likhet med run og apply eksponerer with objektet som this, slik at tilgang til medlemmer ikke trenger noe prefiks.

data class Rectangle(val width: Int, val height: Int)

fun main() {
    val rect = Rectangle(4, 5)
    val area = with(rect) {
        width * height
    }
    println("Area: $area")
}

with returnerer lambda-resultatet

Verdien av det siste uttrykket i blokken blir resultatet av with, akkurat som med run.

fun main() {
    val list = listOf(1, 2, 3, 4, 5)
    val summary = with(list) {
        "Size=$size, First=${first()}, Last=${last()}"
    }
    println(summary)
}

with kontra run

with(obj) { ... } og obj.run { ... } gjør nesten det samme. Forskjellen ligger i syntaksen:

  • run er en extension som kalles på objektet, så den fungerer godt med safe calls.
  • with tar objektet som et argument og kan leses naturlig som «med dette objektet gjør De ...».
fun main() {
    val s = "data"
    val a = with(s) { uppercase() }
    val b = s.run { uppercase() }
    println("$a $b")
}

with er ikke for nullable verdier

Siden objektet sendes som et argument, kombineres with ikke på en god måte med safe-call-operatoren. For nullable receivers bør De foretrekke obj?.run { } eller obj?.let { }.

fun main() {
    val name: String? = "Eve"
    name?.run { println("Hello $this") }
    println("with is awkward for nullables")
}

Lese og beregne samtidig

Et vanlig mønster er å lese flere egenskaper og beregne ett enkelt resultat, alt i én lettlest blokk.

data class Order(val items: Int, val pricePerItem: Int)

fun main() {
    val order = Order(3, 20)
    val total = with(order) {
        items * pricePerItem
    }
    println("Total: $total")
}

Bygge strenger med with

Sammen med buildString eller StringBuilder gjør with det enkelt å skrive ryddig kode for bygging uten prefiks.

fun main() {
    val report = StringBuilder()
    with(report) {
        appendLine("Report")
        appendLine("======")
        appendLine("All good")
    }
    print(report)
}

with på en samling

De kan kalle mange samlingsfunksjoner på den samme listen uten å gjenta navnet.

fun main() {
    val numbers = listOf(10, 20, 30)
    with(numbers) {
        println("Sum: ${sum()}")
        println("Max: ${max()}")
        println("Average: ${average()}")
    }
}

Når De bør bruke with

Velg with når De har et objekt som ikke er null, og vil utføre en gruppe operasjoner på det, eventuelt med et resultat som returverdi. Det signaliserer «Jeg arbeider med dette objektet en stund».

Kort test

Hvordan mottar with objektet sitt?

Oppsummering

with grupperer operasjoner på ett enkelt objekt som ikke er null, sendt inn som et argument, eksponerer det som this og returnerer lambda-resultatet. Den ligner på run, men bruker argumentsyntaks. Deretter skal De lære hvordan De velger riktig scope-funksjon i hver situasjon.

Gratis å komme i gang

Lær deg Kotlin med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
51
Leksjoner
203

Ofte stilte spørsmål

Er leksjonen «with» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Kotlin Academy, inkludert «with», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Kotlin Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «with»?

Gruppér operasjoner Du øver på Kotlin Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Kotlin Academy?

Ingen tidligere erfaring er nødvendig. Kotlin Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «with»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Kotlin Academy-leksjonen?

Ja. Alle Kotlin Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. let og run
  2. apply og also
  3. with
  4. Velge riktig funksjon
← Tilbake til Kotlin Academy