Çeşitli kod parçası

harita azalt

Bir bite listesini bir string listesine dönüştür ve string listesini özetle
birleştirme içeren bir stringte requestBodyContent:byte[] içeren request gönderildiğinde nasıl loglanır?

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

enum ve sealed sınıflar

fonksiyonel arayüz ve metod referansı

Bir varlığı, bir metod referansı (fonksiyonel stil- java 8) kullanarak DTO model domainine dönüştürebiliriz.

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

birhttps://stackoverflow.com/a/22245383/837404[iyi açıklama]

Standart çıktıyı yakala

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

Kotlin’da apply, run, let, also, use ve with arasındaki fark nedir?

Kotlin fonksiyonlarının karşılaştırması ve Lambda Formları Kullanımı Referansı

uygula

Giriş Kotlin fonksiyonları`apply`, run, let, also, use, et `with`Farklı nesneleri işlemek için farklı yöntemler sunarlar. Her biri kendi kullanım durumları ve davranışlarına sahiptir. Ayrıca, lambda referans biçimleri mevcut lambda fonksiyonlarına başvurarak kodu daha okunabilir ve yeniden kullanılabilir kılar.

fonksiyon`apply`Bir nesnenin oluşturulması sırasında onu yapılandırmak için kullanılır. Çağrıldığı nesneyi döndürür.

Lambda referansıyla örnek :

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

Lambda ile örnek :

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

Çalıştır

fonksiyon`run`bir nesne üzerinde bir kod bloğunu çalıştırmak ve kod bloğunun sonucunu döndürmek için kullanılır.

Lambda referanslı örnek :

val result = someObject.run(::someFunction)

Lambda ile örnek:

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

let

Fonksiyon`let`bir nesne üzerinde bir kod bloğunu çalıştırmak ve kod bloğunun sonucunu döndürmek için kullanılır.

Lambda referanslı örnek :

val result = someObject.let(::processObject)

Örnek lambda ile :

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

da

fonksiyon`also`bir nesne üzerinde ek bir işlem yapmak için kullanılır ve çağıldığı nesneyi döndürür.

Örnek lambda referansı ile :

someObject.also(::performAdditionalAction)

lambda ile örnek :

someObject.also {
// action additionnelle sur someObject
}

kullan

Fonksiyon`use`kullanılması gereken kaynaklarla çalışmak için kullanılır. Otomatik olarak fonksiyonu çağırır.`close`blokun sonunda.

lambda referanslı örnek:

someResource.use(::useResource)

Lambda ile örnek:

someResource.use {
// travailler avec la ressource
}

ile

fonksiyon`with`Bir nesne üzerinde adını tekrarlamadan birden fazla yöntemi çağırmak için kullanılır ve son ifadenin sonucunu döndürür.

Lambda referansıyla örnek :

val result = with(someObject, ::processWithObject)

lambda ile örnek:

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

Lambda referans biçimleri veya blokları kullanarak`{}`, mantığı ayrı ayrı fonksiyonlara sarmalayarak, kodun okunabilirliğini ve yeniden kullanılabilirliğini artırabilirsiniz.

let Fonksiyon Kotlin’de

let, nesneyi üzerindeki yan etkilerle birlikte mi, yoksa girişteki ilk durumda mı döndürür, let’e göre ?

Fonksiyon`let`Ancak, fonksiyonun dikkat edilmesi gerekiyor`let`çağrıldığı nesnenin başlangıç durumunu değiştirmez.

İmza inline fun <T, R> T.let(block: (T) → R): R
kullanım Fonksiyon`let`Bu, bir nesneye dönüşümler uygulamak ve bu dönüşümlere dayalı bir sonuç elde etmek için yaygın olarak kullanılır.
Sonuç fonksiyon tarafından döndürülen değer`let`Lambda ifadesi argüman olarak geçirilen ifadenin sonucudur, genellikle nesne üzerinde yapılan işlemlerin sonucudur.
Yan etkileri İşlev olsa da`let`Lambda ifadesinde kullanıldığında nesne üzerinde yan etkileri olabilir, ancak nesnenin başlangıç durumunu değiştirmez.

Böylece, fonksiyon`let`Bir nesne üzerinde işlem yaparak türetilmiş bir sonuç elde ederken, orijinal nesnenin bütünlüğünü koruyarak şık bir yöntemdir.

İlgili Makaleler