Verschiedener Codeausschnitt

Zuordnen und reduzieren

Eine Liste von Bits in eine Liste von Strings umwandeln und die Liste von Strings zusammenfassen
in einem String, der die Konkatenation enthält. Wie man die gesendete Anfrage protokolliert(requestBodyContent:byte[])

log.info(
    requestBodyContent!!.map { it.toInt().toChar().toString() }
        .reduce { request: String, s: String -> request + s }
)

enum und sealed classes

</think> (There is no French text provided to translate, so the output is empty.)Training Kotlin Enum versiegelte Klasse

funktionale Schnittstelle und Methodenreferenz

Man kann eine Entität in ein Domainmodell von DTO mit einer Referenzmethode (funktionaler Stil - Java 8) umwandeln.

fun findAllByLoginNot(
        pageable:Pageable,
        login:String)
    :Page<UserDto> {
    return userDao.findAllByLoginNot(
                    pageable,
                    login).map(::fromEntity)
}

einehttps://stackoverflow.com/a/22245383/837404[gute Erklärung]

Die Standardausgabe erfassen

package functional

import java.io.ByteArrayOutputStream
import java.io.PrintStream
import java.lang.System.out
import java.lang.System.setOut
import kotlin.test.AfterTest
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertEquals


class BasicsHOF {
    private val standardOut: PrintStream? = out
    private val outputStreamCaptor = ByteArrayOutputStream()

    @BeforeTest
    fun setUp() = setOut(PrintStream(outputStreamCaptor))

    @AfterTest
    fun tearDown() = setOut(standardOut)

    @Test
    fun `three times dope`() {

        3.times { println("Hello") }

        assertEquals(
            buildString {
                repeat(3) { append("Hello\n") }
                deleteAt(length - 1)
            }, outputStreamCaptor
                .toString()
                .trim()
        )
    }

    fun Int.times(fn: () -> Unit) = (1..this).forEach { _ -> fn() }
}

Was ist der Unterschied in Kotlin zwischen apply, run, let, also, use und with?

Vergleich der Kotlin-Funktionen und Nutzung der Lambda-Formen-Referenz

anwenden

Einleitung Die Kotlin-Funktionen`apply`, run, let, also, use, et `with`Sie bieten verschiedene Möglichkeiten, Objekte zu behandeln. Jede hat ihre eigenen Anwendungsfälle und Verhaltensweisen. Darüber hinaus ermöglichen Lambda-Referenzformen, den Code lesbarer und wiederverwendbarer zu machen, indem sie auf vorhandene Lambda-Funktionen verweisen.

Die Funktion`apply`wird verwendet, um ein Objekt während seiner Erstellung zu konfigurieren. Sie gibt das Objekt zurück, auf dem sie aufgerufen wird.

Beispiel mit Lambda-Referenz :

val someObject = SomeClass().apply(::configureObject)

Beispiel mit lambda:

val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}

laufen

Die Funktion`run`wird verwendet, um einen Codeblock auf einem Objekt auszuführen und gibt das Ergebnis des Codeblocks zurück.

Beispiel mit lambda reference :

val result = someObject.run(::someFunction)

Beispiel mit lambda :

val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}

let

Die Funktion`let`wird verwendet, um einen Codeblock auf einem Objekt auszuführen und das Ergebnis des Codeblocks zurückzugeben.

Beispiel mit Lambda-Referenz :

val result = someObject.let(::processObject)

Beispiel mit lambda :

val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}

auch

Die Funktion`also`wird verwendet, um eine zusätzliche Aktion an einem Objekt durchzuführen und gibt das Objekt zurück, auf dem sie aufgerufen wird.

Beispiel mit lambda Referenz :

someObject.also(::performAdditionalAction)

Beispiel mit Lambda :

someObject.also {
// action additionnelle sur someObject
}

use

Die Funktion`use`wird verwendet, um mit Ressourcen zu arbeiten, die nach der Verwendung geschlossen werden müssen. Sie ruft automatisch die Funktion auf`close`am Ende des Blocks.

Beispiel mit Lambda-Referenz :

someResource.use(::useResource)

Beispiel mit lambda :

someResource.use {
// travailler avec la ressource
}

avec

Die Funktion`with`wird verwendet, um mehrere Methoden auf einem Objekt aufzurufen, ohne dessen Namen zu wiederholen, und gibt das Ergebnis des letzten Ausdrucks zurück.

Beispiel mit Lambda-Referenz :

val result = with(someObject, ::processWithObject)

Beispiel mit lambda :

val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}

Indem du die lambda reference Formen oder die Blöcke verwendest`{}`, Sie können die Logik in separate Funktionen kapseln, wodurch die Lesbarkeit und Wiederverwendbarkeit des Codes verbessert wird.

let Function in Kotlin

Gibt let das Objekt mit den darauf ausgeübten Seiteneffekten zurück oder im ursprünglichen Eingabezustand, abhängig von (let) ?

Die Funktion`let`Kotlin wird verwendet, um Operationen an einem Objekt durchzuführen und ein anderes Ergebnis zurückzugeben. Es ist jedoch wichtig zu beachten, dass die Funktion`let`Sie ändert den Anfangszustand des Objekts, auf dem sie aufgerufen wird, nicht.

Signatur

inline fun <T, R> T.let(block: (T) → R): R

Verwendung

Die Funktion`let`wird häufig verwendet, um Transformationen auf ein Objekt anzuwenden und ein Ergebnis basierend auf diesen Transformationen zu erhalten.

Ergebnis

Der von der Funktion zurückgegebene Wert`let`ist das Ergebnis des als Argument übergebene Lambda-Ausdrucks, in der Regel das Ergebnis der auf dem Objekt durchgeführten Operationen.

Seiteneffekte

Obwohl die Funktion`let`kann Nebeneffekte auf das Objekt haben, wenn sie in dem Lambda-Ausdruck verwendet wird, ändert sie jedoch nicht den Anfangszustand des Objekts selbst.

Daher die Funktion`let`ist eine elegante Möglichkeit, Operationen an einem Objekt durchzuführen, während ein abgeleiteter Ergebnis erzielt wird, während die Integrität des ursprünglichen Objekts gewahrt bleibt.

Verwandte Artikel