DEV Community

alfianandinugraha
alfianandinugraha

Posted on • Updated on

Let, Run, Apply, & Also di Kotlin

Fungsi dari scope function adalah untuk mengelola object menggunakan lambda / fungsi ekstensi. Kegunaan ini adalah agar kode mudah dibaca karena memiliki scope masing-masing. Buat kode class terlebih dahulu untuk nanti dipakai lagi :

data class Product (
    var name: String,
    var price: Int
)
Enter fullscreen mode Exit fullscreen mode

Jenis-jenis

Perlu diingat bahwa materi ini akan berkaitan erat dengan lambda bagi kamu yang belum tau apa itu lambda silahkan cek disini yaa :

Let

Let lambda memungkinkan untuk mengelola object sekaligus mengembalikan sesuatu. Let juga memiliki satu parameter yang nantinya juga bisa dialiaskan dengan keyword it. Contoh kode :

fun main() {
    val asus = Product("Asus", 6_000_000)

    val description: String = asus.let { product ->
        println(product.name)
        println(product.price)
        "Name ${product.name}, Price: Rp${product.price}"
    }

    println(description)
}
Enter fullscreen mode Exit fullscreen mode

Hasil output :
image

Run

Lambda ini hampir mirip dengan let yang membedakan adalah lambda ini tidak memiliki parameter jadi untuk mengakses objectnya menggunakan keyword this. Contoh kode :

fun main() {
    val lenovo = Product("Lenovo", 3_000_000)

    val description: String = lenovo.run {
        println(this.name)
        println(this.price)
        "Name ${this.name}, Price: Rp${this.price}"
    }

    println(description)
}
Enter fullscreen mode Exit fullscreen mode

Hasil output :
image

Also

Also memiliki 1 parameter dan mengembalikan nilai object itu sendiri. Contoh :

fun main() {
    val msi = Product("MSI", 5_000_000)

    val newMsi: Product = msi.also { product ->
        println(product.name)
        println(product.price)
    }
}
Enter fullscreen mode Exit fullscreen mode

Hasil Output :
image

Apply

Berbeda dengan sebelumnya, apply hanya mengembalikan nilai Object itu sendiri saja dan tidak memiliki paramater. Jadi untuk mengakses properti nya menggunakan keyword this

fun main() {
    val hp = Product("HP", 4_000_000)

    val newHp: Product = hp.apply {
        println(this.name)
        println(this.price)
    }
}
Enter fullscreen mode Exit fullscreen mode

Hasil Output :
image

Top comments (0)