Untuk penjelasan mengenai Scope function simak penjelasan dibawah ini:
run
Fungsi run akan mengembalikan nilai berdasarkan expression yang berada di dalam blok lamda. Untuk mengakses konteks dari objek, ia akan menggunakan receiver this. Fungsi run akan sangat berguna jika didalam blok lamda terdapat inisialisasi objek dan perhitungan untuk nilai kembalian.
Contoh penggunaannya seperti berikut:
fun getNullableLength(ns: String?){
println("for \"$ns\":")
ns?.run{
println("\this empty?" + isEmpty())
println("\tlength = $length")
length
}
}
get NullableLength(null)
get NullableLength("")
get NullableLength("some string with Kotlin")
- memanggil blok yang diberikan pada variabel nullable.
- di dalam run, objek remember diakses tanpa namanya.
- run mengembalikan panjang String yang diberikan jika bukan null.
with
Selanjutnya fungsi with. Pada dasarnya fungsi with bukanlah sebuah extension melainkan hanyalah fungsi biasa. Konteks objeknya disematkan sebagai argumen dan dari blok lamda diakses sebagai receiver.
Contohnya seperti berikut:
with(configuration){
println("$host:$port")
}
//instead of:
println("${configuration.host}:${configuration.port}")
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:
val jake = Person()
val stringDescription = jake.apply{
name = "Jake"
age = 30
about = "Android Developer"
}.toString()
- Membuat instance Person() dengan nilai proverti default.
- Terapkan blok kode( 3 baris berikutnya) ke instance
- dialam apply, ini setara dengan jake.name = "Jake".
- nilai pengembalian adalah instance itu sendiri, sehingga anda dapat chain operasi lain.
let
Fungsi let menggunakan argumen (it) untuk mengakses konteks dari sebuah objek. Penggunaan fungsi let akan banyak kita temukan pada objek yang bertipe non-null. Contohnya seperti dibawah ini:
val empty = "test".let{
customPrint(it)
it.isEmpty()
}
println("is empty: $empty")
fun printNonNull(str: String?){
println("Printing \"str\":")
str?.let{
print("\t")
customPrint(it)
println()
}
}
printNonNull(null)
printNonNull("my string")
- Memanggil blok yang diberikan pada hasil pad string "test".
- Memanggil fungsi pada "test" dengan it referensi.
- let mengembalikan nilai ekspresi
- Menggunakan call, jadi let dan blok kodenya akan dieksekusi hanya pada nilai yang bukan null.
also
Fungsi also sama seperti fungsi apply, dimana 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.
val jake = Person("Anwar", 25, "Android developer")
.also{
writeCreationLog(it)
}
- Membuat objek Person() dengan nilai properti yang diberikan.
- Menerapkan blok kode yang diberikan ke objek. Nilai kembali adalah itu sendiri
- Memanggil fungsi logging melewati objek sebagai argumen Lanjut.
Terima Kasih sudah membaca Mengenal Scope Function pada Bahasa Pemrograman Kotlin. Semoga Bermanfaat!
Tidak ada komentar untuk " Mengenal Scope Function pada Bahasa Pemrograman Kotlin "
terimakasih telah berkunjung ke blogg kami