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

Introdução As funções Kotlin`apply`, 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

O let retorna o objeto com os efeitos colaterais aplicados a ele ou no estado inicial de entrada, dependendo (let) ?

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

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

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.

Articles connexes