Memo Kotlin
Publié le 29 May 2022
Buenos enlaces
Trozos de código varios
map reduce
Convertir una lista de mordida hacia una lista de cadena y resumir la lista de cadena
en una cadena que contiene la concatenación. Cómo registrar la solicitud enviada(requestBodyContent:byte[])
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
enum y clases selladas
interfaz funcional y referencia de método
Se puede transformar una entidad en modelo de dominio de DTO con una referencia de método (estilo funcional - Java 8)
fun findAllByLoginNot(
pageable:Pageable,
login:String)
:Page<UserDto> {
return userDao.findAllByLoginNot(
pageable,
login).map(::fromEntity)
}
unahttps://stackoverflow.com/a/22245383/837404[buena explicación]
Capturar la salida estándar
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() }
}
¿Cuál es la diferencia en Kotlin entre apply, run, let, also, use y with?
Comparación de las funciones Kotlin y Uso de las Formas Lambda Reference
apply
run, let, also, use, et `with`Ofrecen diferentes maneras de tratar los objetos. Cada una tiene sus propios casos de uso y comportamientos. Además, las formas de lambda por referencia permiten hacer el código más legible y reutilizable al referirse a funciones lambda existentes.La función`apply`se utiliza para configurar un objeto durante su creación. Devuelve el objeto sobre el cual se llama.
Ejemplo con referencia lambda :
val someObject = SomeClass().apply(::configureObject)
Ejemplo con lambda :
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
ejecutar
La función`run`se utiliza para ejecutar un bloque de código en un objeto y devuelve el resultado del bloque de código.
Ejemplo con lambda referencia :
val result = someObject.run(::someFunction)
Ejemplo con lambda :
val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
let
La función`let`se utiliza para ejecutar un bloque de código sobre un objeto y devuelve el resultado del bloque de código.
Ejemplo con lambda reference:
val result = someObject.let(::processObject)
Ejemplo con lambda :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
también
La función`also`se utiliza para realizar una acción adicional sobre un objeto y devuelve el objeto sobre el cual se llama.
Ejemplo con referencia lambda :
someObject.also(::performAdditionalAction)
Ejemplo con lambda :
someObject.also {
// action additionnelle sur someObject
}
use
La función`use`se utiliza para trabajar con recursos que deben cerrarse después de su uso. Llama automáticamente la función`close`al final del bloque.
Ejemplo con referencia lambda:
someResource.use(::useResource)
Ejemplo con lambda :
someResource.use {
// travailler avec la ressource
}
con
La función`with`se utiliza para llamar a varios métodos en un objeto sin repetir su nombre y devuelve el resultado de la última expresión.
Ejemplo con referencia lambda :
val result = with(someObject, ::processWithObject)
Ejemplo con lambda :
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
Utilizando las formas lambda reference o los bloques`{}`, puedes encapsular la lógica en funciones distintas, mejorando así la legibilidad y la reutilizabilidad del código.
let Function en Kotlin
La función`let`En Kotlin se utiliza para realizar operaciones en un objeto y devolver un resultado diferente. Sin embargo, es importante destacar que la función`let`no modifica el estado inicial del objeto sobre el que se llama.
firma |
|
Uso |
La función`let`Se utiliza comúnmente para aplicar transformaciones a un objeto y obtener un resultado basado en estas transformaciones. |
Resultado |
El valor devuelto por la función`let`es el resultado de la expresión lambda pasada como argumento, generalmente el resultado de las operaciones realizadas sobre el objeto. |
Efectos de borde |
Aunque la función`let`puede tener efectos secundarios en el objeto cuando se usa en la expresión lambda, no modifica el estado inicial del objeto mismo. |
Así, la función`let`es una forma elegante de realizar operaciones sobre un objeto mientras se obtiene un resultado derivado, manteniendo al mismo tiempo la integridad del objeto original.