DEV Community

Cover image for Scope Functions di Kotlin
Aditiya Prayogo
Aditiya Prayogo

Posted on • Edited on

Scope Functions di Kotlin

Mungkin beberapa orang ada yang masih bingung dengan perbedaan standart function yang terdapat di kotlin dan bingung untuk menentukan yang mana yang tepat untuk digunakan.
Disini saya akan menjelaskan perbedaan penggunaan antara standart function dan cara menentukan function yang tepat untuk digunakan.

Scope Function

Apa itu Scope Function ? Di kotlin Scope function adalah sebuah standard library yang berisikan beberapa function yang bisa digunakan untuk mengeksekusi object dengan mudah memanfaatkan lambda expression. di blog ini akan kita bahas mengenai T.let, T.run, T.apply, T.also

let

let merupakan sebuah Scope Function yang menjadikan Object sebagai Parameter lambdanya. Sehingga perlu menggunakan it untuk mengakses refrence terhadap object tersebut.

Contoh Penggunaan :

data class Student(
        val name : String,
        val major : String,

)

fun main() {

    val student = Student(name = "adit" ,major = "informatics")

    /**
     * Penggunaan let
    */
    student.let { it ->
        val text = "Nama saya ${it.name}, Jurusan saya ${it.major }"
        println(text) 
    }

/*
   output : Nama saya adit, Jurusan saya teknik informatics
*/

}
Enter fullscreen mode Exit fullscreen mode

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 Penggunaan :

   val name = "Aditiya"

    val result = name.run {
        val from = this
        val to = this.replace(oldValue = "Aditiya", newValue = "Ihzar")
        "Replace text from $from to $to"
    }
    println(result)


    /*
       Output : Replace text from Aditiya to Ihzar
   */
Enter fullscreen mode Exit fullscreen mode

apply

Pengertian Apply hampir sama dengan run, Yang membedakan adalah return value dari apply merupakan refrence object itu sendiri

Contoh penggunaan :

data class Student(
        var nim : Int?,
        var name : String?,
        var major : String?,
        var address : String?
)

fun main() {

    val student : Student? = null

    /**
     * Contoh penggunaan apply
     */
    student?.apply {
        nim = 1811500584
        name = "Aditiya Prayogo"
        major = "teknik Informatika"
        address = "Jln komp ddn nomor 50"
    }

}
Enter fullscreen mode Exit fullscreen mode

Contoh lain Penggunaan apply :

fun main() {
    val message = StringBuilder().apply {this : StringBuilder
        append("Aditiya ")
        append("Prayogo!")
    }

    println(message.toString())
}

/*
   output : Aditiya Prayogo
*/
Enter fullscreen mode Exit fullscreen mode

also

Fungsi also sama seperti fungsi apply, di mana nilai yang dikembalikan adalah nilai dari konteks objek. Namun untuk konteks objeknya tersedia sebagai argumen (it). Fungsi also baiknya digunakan ketika kita ingin menggunakan konteks dari objek sebagai argumen tanpa harus mengubah nilainya.

Contoh penggunaan :

fun main() {
    val text = "Hello Aditiya"

    println(text)

    val result = text.also {
        println("value length -> ${it.length}")
    }
}

/*
   output :
           Hello Aditiya
           value length -> 13
*/
Enter fullscreen mode Exit fullscreen mode

Kapan kita menggunakan let, run, apply, dan also ?

Simak Flowchart di bawah ini
Gambar

Refrensi

  1. https://medium.com/mobile-app-development-publication/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84

  2. https://proandroiddev.com/kotlin-scope-functions-made-simple-c59b97a04ca2

Top comments (0)