Berbagai potongan kode

map reduce

Mengonversi daftar bite menjadi daftar string dan meringkas daftar string
dalam sebuah string yang berisi penggabungan Bagaimana mencatat permintaan yang dikirim(requestBodyContent:byte[])

log.info(
    requestBodyContent!!.map { it.toInt().toChar().toString() }
        .reduce { request: String, s: String -> request + s }
)

enum dan kelas yang disegel

interface fungsional dan referensi metode

Kita dapat mengubah sebuah entitas menjadi model domain dari dto dengan metode referensi (gaya fungsional - java 8)

fun findAllByLoginNot(
        pageable:Pageable,
        login:String)
    :Page<UserDto> {
    return userDao.findAllByLoginNot(
                    pageable,
                    login).map(::fromEntity)
}

sebuahhttps://stackoverflow.com/a/22245383/837404[penjelasan yang baik]

Menangkap output standar

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() }
}

Apa perbedaan di Kotlin antara apply, run, let, also, use dan with?

Perbandingan fungsi Kotlin dan Penggunaan Bentuk Lambda Reference

menerapkan

Pendahuluan Fungsi Kotlin`apply`, run, let, also, use, et `with`Menyediakan cara berbeda untuk memproses objek. Masing-masing memiliki kasus penggunaan dan perilaku masing-masing. Selain itu, bentuk lambda reference memungkinkan kode menjadi lebih mudah dibaca dan dapat digunakan kembali dengan merujuk pada fungsi lambda yang sudah ada.

Fungsi`apply`digunakan untuk mengonfigurasi sebuah objek selama pembuatannya. Ia mengembalikan objek yang dipanggilnya.

Contoh dengan referensi lambda:

val someObject = SomeClass().apply(::configureObject)

Contoh dengan lambda :

val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}

run

Fungsi`run`digunakan untuk mengeksekusi blok kode pada sebuah objek dan mengembalikan hasil dari blok kode.

Contoh dengan referensi lambda :

val result = someObject.run(::someFunction)

Contoh dengan lambda :

val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}

let

Fungsi`let`digunakan untuk menjalankan blok kode pada objek dan mengembalikan hasil dari blok kode.

Contoh dengan referensi lambda :

val result = someObject.let(::processObject)

Contoh dengan lambda :

val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}

juga

Fungsi`also`digunakan untuk melakukan tindakan tambahan pada sebuah objek dan mengembalikan objek yang dipanggilnya.

Contoh dengan referensi lambda :

someObject.also(::performAdditionalAction)

Contoh dengan lambda :

someObject.also {
// action additionnelle sur someObject
}

use

fungsi`use`digunakan untuk bekerja dengan sumber daya yang harus ditutup setelah penggunaan. Ia memanggil secara otomatis fungsi`close`di akhir blok.

Contoh dengan referensi lambda:

someResource.use(::useResource)

Contoh dengan lambda :

someResource.use {
// travailler avec la ressource
}

dengan

Fungsi`with`digunakan untuk memanggil beberapa metode pada sebuah objek tanpa mengulangi namanya dan mengembalikan hasil dari ekspresi terakhir.

Contoh dengan referensi lambda :

val result = with(someObject, ::processWithObject)

Contoh dengan lambda :

val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}

Menggunakan bentuk referensi lambda atau blok`{}`, Anda dapat mengenkapsulasi logika ke dalam fungsi terpisah, sehingga meningkatkan kejelasan dan penggunaan kembali kode.

let Function di Kotlin

Apakah let mengembalikan objek dengan efek samping yang diterapkan padanya atau dalam kondisi awal input tergantung pada let?

Fungsi`let`Di Kotlin digunakan untuk melakukan operasi pada objek dan mengembalikan hasil yang berbeda. Namun, penting untuk dicatat bahwa fungsi`let`tidak mengubah keadaan awal objek yang dipanggil

Tanda tangan

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

penggunaan

Fungsi`let`sering digunakan untuk menerapkan transformasi pada sebuah objek dan mendapatkan hasil berdasarkan transformasi tersebut.

Hasil

Nilai yang dikembalikan oleh fungsi`let`adalah hasil dari ekspresi lambda yang diteruskan sebagai argumen, biasanya hasil dari operasi yang dilakukan pada objek.

Efek tepi

Meskipun fungsi`let`dia dapat menimbulkan efek samping pada objek ketika digunakan dalam ekspresi lambda, dia tidak mengubah keadaan awal objek itu sendiri.

Sebab itu, fungsi`let`adalah cara elegan untuk melakukan operasi pada sebuah objek sekaligus mendapatkan hasil yang diturunkan, sekaligus menjaga integritas objek aslinya.

Artikel terkait