Memo Kotlin
Publié le 29 May 2022
Links bons
Trecho de código variado
map reduce
Converter uma lista de bite para uma lista de string e resumir a lista de string
em uma string contendo a concatenação. Como registrar a requisição enviada(requestBodyContent:byte[])
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
enum e classes seladas
interface funcional e referência de método
É possível transformar uma entidade em um modelo de DTO utilizando uma referência de método (estilo funcional - Java 8)
fun findAllByLoginNot(
pageable:Pageable,
login:String)
:Page<UserDto> {
return userDao.findAllByLoginNot(
pageable,
login).map(::fromEntity)
}
umahttps://stackoverflow.com/a/22245383/837404[boa explicação]
Capturar a saída padrão
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() }
}
Qual é a diferença em kotlin entre apply, run, let, also, use e with ?
Comparação das funções Kotlin e Utilização das Formas Lambda Referência
aplicar
run, let, also, use, et `with`oferecem diferentes maneiras de tratar os objetos. Cada uma tem seus próprios casos de uso e comportamentos. Além disso, as formas lambda reference permitem deixar o código mais legível e reutilizável ao fazer referência a funções lambda existentes.A função`apply`é usada para configurar um objeto durante a sua criação. Ela retorna o objeto no qual ela é chamada.
Exemplo com referência lambda :
val someObject = SomeClass().apply(::configureObject)
Exemplo com lambda :
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
run
A função`run`é utilizada para executar um bloco de código em um objeto e retorna o resultado do bloco de código.
Exemplo com referência lambda :
val result = someObject.run(::someFunction)
Exemplo com lambda :
val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
deixe
A função`let`é usada para executar um bloco de código em um objeto e retorna o resultado do bloco de código.
Exemplo com lambda referência :
val result = someObject.let(::processObject)
Exemplo com lambda :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
também
A função`also`é usada para executar uma ação adicional em um objeto e retorna o objeto no qual ela é chamada.
Exemplo com referência lambda :
someObject.also(::performAdditionalAction)
Exemplo com lambda :
someObject.also {
// action additionnelle sur someObject
}
use
A função`use`É utilizada para trabalhar com recursos que devem ser fechados após o uso. Ela chama automaticamente a função`close`no final do bloco.
Exemplo com referência de lambda :
someResource.use(::useResource)
Exemplo com lambda:
someResource.use {
// travailler avec la ressource
}
com
A função`with`É usada para chamar vários métodos em um objeto sem repetir seu nome e retorna o resultado da última expressão.
Exemplo com referência lambda :
val result = with(someObject, ::processWithObject)
Exemplo com lambda:
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
Usando as formas lambda de referência ou os blocos`{}`, você pode encapsular a lógica em funções separadas, melhorando assim a legibilidade e a reutilização do código.
Função em Kotlin
A função`let`em Kotlin é usada para realizar operações em um objeto e retornar um resultado diferente. No entanto, é importante observar que a função`let`não modifica o estado inicial do objeto no qual ela é chamada.
Assinatura |
|
uso |
A função`let`é comumente utilizada para aplicar transformações a um objeto e obter um resultado baseado nessas transformações. |
resultado |
O valor retornado pela função`let`é o resultado da expressão lambda passada como argumento, geralmente o resultado das operações realizadas sobre o objeto. |
Efeitos colaterais |
Embora a função`let`pode ter efeitos colaterais no objeto quando é usada na expressão lambda, ela não modifica o estado inicial do próprio objeto. |
Assim, a função`let`É uma forma elegante de realizar operações em um objeto enquanto se obtém um resultado derivado, preservando também a integridade do objeto original.