Belajar Scope Function with Lambda Receiver di Kotlin

Dhe997

Scope Function with Lambda Receiver

run

Fungsi run akan mengembalikan nilai berdasarkan expression yang berada di dalam blok lambda. Untuk mengakses konteks dari objek, ia akan menggunakan receiver (this). Fungsi run akan sangat berguna jika di dalam blok lambda terdapat inisialisasi objek dan perhitungan untuk nilai kembalian. Contoh penggunaannya seperti berikut:


  1. fun main() {

  2.     val text = "Hello"

  3.     val result = text.run {

  4.         val from = this

  5.         val to = this.replace("Hello", "Kotlin")

  6.         "replace text from $from to $to"

  7.     }

  8.     println("result : $result")

  9. }

  10.  

  11. /*

  12.    output : result : replace text from Hello to Kotlin

  13. */



with

Selanjutnya fungsi with. Pada dasarnya fungsi with bukanlah sebuah extension melainkan hanyalah fungsi biasa. Konteks objeknya disematkan sebagai argumen dan dari blok lambda diakses sebagai receiver. Contohnya seperti berikut:

  1. fun main() {

  2.     val message = "Hello Kotlin!"

  3.     val result = with(message) {

  4.         println("value is $this")

  5.         println("with length ${this.length}")

  6.     }

  7. }


Nilai yang akan dikembalikan adalah berdasarkan expression yang berada di dalam blok lambda. Misalnya seperti berikut:

  1. fun main() {

  2.     val message = "Hello Kotlin!"

  3.     val result = with(message) {

  4.         "First character is ${this[0]}" +

  5.                 " and last character is ${this[this.length - 1]}"

  6.     }

  7.  

  8.     println(result)

  9. }

  10.  

  11. /*

  12.    output : First character is H and last character is !

  13. */


Fungsi with sendiri disarankan untuk mengakses apa yang menjadi anggotanya tanpa harus menyediakan nilai kembalian.

apply

Berbeda dengan fungsi-fungsi sebelumnya, nilai yang dikembalikan dari fungsi apply adalah nilai dari konteks objeknya dan objek konteksnya tersedia sebagai receiver (this). Baiknya fungsi apply dapat melakukan inisialisasi atau konfigurasi dari receiver-nya. Perhatikan kode berikut:

  1. fun main() {

  2.     val builder = StringBuilder()

  3.     builder.append("Hello ")

  4.     builder.append("Kotlin!")

  5.  

  6.     println(builder.toString())

  7. }

  8.  

  9. /*

  10.    output : Hello Kotlin

  11. */


Dengan fungsi apply kita bisa menuliskannya seperti di bawah ini:

  1. fun main() {

  2.     val message = StringBuilder().apply {

  3.         append("Hello ")

  4.         append("Kotlin!")

  5.     }

  6.  

  7.     println(message.toString())

  8. }

  9.  

  10. /*

  11.    output : Hello Kotlin

  12. */


إرسال تعليق

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.