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
*/
}
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
*/
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"
}
}
Contoh lain Penggunaan apply :
fun main() {
val message = StringBuilder().apply {this : StringBuilder
append("Aditiya ")
append("Prayogo!")
}
println(message.toString())
}
/*
output : Aditiya Prayogo
*/
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
*/
Top comments (0)