Kotlin-Memo
Publié le 29 May 2022
Gute Links
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
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
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 |
|
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.