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

Introducción Las funciones Kotlin`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

¿Let devuelve el objeto con los efectos de borde aplicados sobre él o en el estado inicial de entrada según (let) ?

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

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

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.

Articles connexes