Mémo Kotlin
Gepubliceerd op 29 May 2022
Goede links
EssentyCould you please provide the French text you would like translated to Dutch?
Fragment van diverse code
map reduce
Een list van bite converteren naar een list van string en de list van string samenvatten
in een string die de concatenatie bevat. Hoe log je de verzonden request(requestBodyContent:byte[])
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
enum en sealed classes
functionele interface en methodeverwijzing
Men kan een entiteit omzetten naar een DTO-domeinmodel met een methodeverwijzing(functionele stijl- java 8)
fun findAllByLoginNot(
pageable:Pageable,
login:String)
:Page<UserDto> {
return userDao.findAllByLoginNot(
pageable,
login).map(::fromEntity)
}
eenhttps://stackoverflow.com/a/22245383/837404[goede uitleg]
Standaardoutput vastleggen
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() }
}
Wat is het verschil in Kotlin tussen apply, run, let, also, use en with ?
Vergelijking van Kotlin-functies en gebruik van Lambda-vormen Referentie
apply
run, let, also, use, et `with`bieden verschillende manieren om objecten te behandelen. Elk heeft zijn eigen gebruiksscenario’s en gedrag. Bovendien maken lambda-referentievormen het mogelijk de code leesbaarder en herbruikbaar te maken door te verwijzen naar bestaande lambda-functies.De functie`apply`wordt gebruikt om een object te configureren tijdens zijn creatie. Het retourneert het object waarop het wordt aangeroepen.
Voorbeeld met lambda referentie :
val someObject = SomeClass().apply(::configureObject)
Voorbeeld met lambda :
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
run
De functie`run`wordt gebruikt om een codeblok uit te voeren op een object en geeft het resultaat van het codeblok terug.
Voorbeeld met lambda referentie:
val result = someObject.run(::someFunction)
Voorbeeld met lambda :
val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
let
De functie`let`wordt gebruikt om een codeblok uit te voeren op een object en retourneert het resultaat van het codeblok.
Voorbeeld met lambda-verwijzing :
val result = someObject.let(::processObject)
Voorbeeld met lambda :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
ook
De functie`also`wordt gebruikt om een extra actie uit te voeren op een object en retourneert het object waarop deze methode wordt aangeroepen.
Voorbeeld met lambda-verwijzing :
someObject.also(::performAdditionalAction)
Voorbeeld met lambda :
someObject.also {
// action additionnelle sur someObject
}
utiliser
De functie`use`wordt gebruikt om te werken met bronnen die na gebruik gesloten moeten worden. Ze roept automatisch de functie aan`close`aan het einde van het blok.
Voorbeeld met lambda-referentie :
someResource.use(::useResource)
Voorbeeld met lambda:
someResource.use {
// travailler avec la ressource
}
met
De functie`with`wordt gebruikt om meerdere methoden op een object aan te roepen zonder de naam te herhalen en retourneert het resultaat van de laatste expressie.
Voorbeeld met lambda referentie :
val result = with(someObject, ::processWithObject)
(empty)
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
Door gebruik te maken van de lambda‑referentievormen of de blokken`{}`, kunt u de logica encapsuleren in aparte functies, waardoor de leesbaarheid en herbruikbaarheid van de code wordt verbeterd.
laat Functie in Kotlin
De functie`let`In Kotlin wordt het gebruikt om bewerkingen uit te voeren op een object en een ander resultaat terug te geven. Het is echter belangrijk op te merken dat de functie`let`Het wijzigt niet de initiële staat van het object waarop het wordt aangeroepen.
| Handtekening | inline fun <T, R> T.let(block: (T) → R): R |
|---|
| gebruik | De functie`let`wordt vaak gebruikt om transformaties toe te passen op een object en een resultaat te verkrijgen dat gebaseerd is op deze transformaties. |
|---|
| Resultaat | De door de functie geretourneerde waarde`let`is het resultaat van de doorgegeven lambda-expressie, meestal het resultaat van de uitgevoerde bewerkingen op het object. |
|---|
| bijwerkingen | Hoewel de functie`let`kan bijwerkingen hebben op het object wanneer het wordt gebruikt in de lambda-expressie, maar het wijzigt niet de initiële staat van het object zelf. |
|---|
Dus, de functie`let`Het is een elegante manier om bewerkingen uit te voeren op een object terwijl een afgeleid resultaat wordt verkregen, terwijl de integriteit van het originele object behouden blijft.