Catatan Kotlin
Diterbitkan 29 May 2022
Tautan yang baik
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
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
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 |
|
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.