DEV Community

alfianandinugraha
alfianandinugraha

Posted on

Lebih Dekat Dengan Lambda di Kotlin

Lambda disebut juga sebagai anonymous function, karena sifatnya yang tidak perlu mendeklarasikan fungsi. Perbedaan function dengan lambda adalah lambda langsung mengembalikan nilai tanpa perlu menggunakan keyword return. Contoh kode:

fun main () {
    val sayHello = { name: String -> "Hello, I'm $name" }
    println(sayHello("Andi")) // output : "Hello, I'm Andi"
}
Enter fullscreen mode Exit fullscreen mode

Penulisan lambda juga bisa ditaruh di luar fungsi main. Karena lambda ini tidak perlu menggunakan return maka cara untuk membuat multilinenya adalah

fun main() {
    val add = { num1: Int, num2: Int ->
        val result = num1 + num2
        result
    }
    println(add(5, 2)) // output : 7
}
Enter fullscreen mode Exit fullscreen mode

Keyword it

It akan merujuk kepada parameter yang hanya berjumlah satu. Contoh :

fun main() {
    // val getMessage: (String) -> String = { name: String -> "Hello from $name" }
    val getMessage: (String) -> String = { "Hello from $it" }
    val message: String = getMessage("Andi")
    print(message) // output : Hello from Andi
}
Enter fullscreen mode Exit fullscreen mode

Pada contoh diatas untuk membuat lambda getMessage bisa menggunakan kode :

val getMessage: (String) -> String = { name: String -> "Hello from $name" }
Enter fullscreen mode Exit fullscreen mode

Tapi karena lambda ini hanya memiliki satu parameter saja yaitu name maka parameter bisa dihapus lalu untuk memanggil parameternya cukup menggunakan keyword it.

val getMessage: (String) -> String = { "Hello from $it" }
Enter fullscreen mode Exit fullscreen mode

Syarat untuk menggunakan keyword it adalah

  • Parameter harus ada satu dan tidak boleh lebih
  • Harus mendeklarasikan tipe datanya, pada contoh tipe data pada getMessage adalah (String) → String

Empty Parameter

Lambda bisa dibuat tanpa menggunakan parameter. Contohnya :

fun main() {
    val sayHi = { "Hi world !" }
    println(sayHi()) // output : Hi world !
}
Enter fullscreen mode Exit fullscreen mode

Discussion (0)