Kotlin Android Development: Function Standard
How to use function let, apply, also and takeif
Mungkin beberapa dari programmer java ada yang berpindah ke kotlin termasuk saya sendiri. Seperti yang kita ketahui bahwa bahasa kotlin merupakan bahasa turunan dari bahasa pemograman java yang di release pada awal tahun 2016. Pada bahasa pemograman kotlin kita pasti pernah dan akan pernah menjumpai beberapa fungsi seperti let, apply, also, atau takeif.
Jadi apa perbedaan let, apply, also, atau takeif dan bagaimana penggunaannya?
Sebelum kita membahasa apa dan bagaimana cara penggunaannya coba perhatikan potongan kode berikut ini.
Pada kode diatas kita bisa melihat fungsi-fungsi tersebut dapat digunakan secara bersamaan.
- let{ }
var nama: String? = null
nama?.let{ print("nama saya adalah : $it") }
kode diatas menerangkan bahwa variable nama hanya akan bisa di print jika nilainya tidak null ditandai dengan adanya tanda tanya (?).
it merupakan string return dari fungsi let tersebut dan tentunya dapat diubah sesuai keinginan. Untuk mempermudah, kode diatas bisa diubah seperti berikut
1. sebelum $it diubah
var nama: String? = null
nama?.let{ it ->
print("nama saya adalah : $it")
}2. setelah it diubah menjadi nm
var nama: String? = null
nama?.let{ nm ->
print("nama saya adalah : $nm")
}
Jadi dapat disimpulkan fungsi let adalah fungsi dimana nilai yang akan dikembalikannya adalah tipe object yang menggunakan fungsi tersebut. Jika object berupa string maka nilai kembaliannya adalah string, jika object adalah integer maka kembalinya integer dan sebagainya.
2. apply{}
val nama = "ALI"
val umur = "19"
val jsonObject = JSONObject()
jsonObject.put("name", nama)
jsonObject.put("age", umur)
Kode diatas adalah contoh bahasa program yang dapat disederhanakan menggunakan fungsi apply menjadi
dari contoh diatas dapat disimpulkan bahwa fungsi apply adalah fungsi yang akan mengembalikan object yang menggunakan fungsi tersebut. Pada contoh diatas object yang menggunakan fungsi apply adalah JSONObject, maka kembaliannya adalah JSONObject itu sendiri, dan jika String maka kembaliannya juga String, begitu juga dengan object yang lain.
3. also{}
Pada contoh diatas kita bisa melihat return atau argument yang dihasilkan adalah berupa JSONObject karena yang menggunakannya adalah JSONObject. Itu menunjukkan fungsinya hampir sama dengan let{}. Akan tetapi ada perbedaan diataranya kedua fungsi tersebut. Untuk memperjelas perhatikan contoh berikut.
Kode diatas dapat diartikan bahwa object text1 akan diganti nilainya dengan yang ada pada block let dan yang dikembalikan adalah sesuai object yang menggunakannya. Jika kode dijalankan maka yang diprint adalah string “name” karena nilai dari text1 tidak di ikut sertakan pada block let akan tetapi jika “ print(“name “) diganti menjadi print(“name $it”) “ maka yang ditampilkan adalah string “ name ali agus hutapea” karena nilai text1 diikut sertakan didalam block let. Untuk mencobanya anda dapat menjalankannya pada link dibawah ini.
https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt
Kode diatas dapat diartikan bahwa nilai text1 tidak diganti dengan nilai dari block also tersebut, melainkan nilai text1 akan ditambah dengan nilai dari block also. Kode tersebut setelah dijalankan maka yang diprint adalah string “name ali agus hutapea” walaupun nilai text1 tidak diikut sertakan di dalam block also. Jika fungsi also diganti dengan apply maka akan menghasilkan hasil yang sama.
Pertanyaan selanjutnya bagaimana jika fungsi print didalam block let, also dan apply di hapus dan diganti dengan string saja? apa yang akan terjadi?
Untuk menjawab pertanyaan tersebut perhatikan contoh di bawah ini.
Dari ketiga contoh diatas terlihat jelas perbedaannya. Fungsi let tanpa ada fungsi print tetap memberikan nilai, berbeda dengan fungsi also dan apply.
4. takeIf{}
Fungsi yang satu ini sedikit berbeda dari ketiga fungsi sebelumnya karena pada fungsi ini ada pengecekan kondisi dari object yang menggunakannya. Jika sesuai dengan kondisi yang di cek maka nilai kembaliannya adalah object itu sendiri maka nilai kembaliannya adalah null. Oleh karena itu diakhir fungsi ini harus disertai fungsi pengecekan null atau tanda tanya (?). Jika tidak diakhiri dengan tanda tanya maka apapun kondisinya maka nilai return nya adalah object itu sendiri alias tidak null. Untuk mempermudah perhatikan contoh berikut ini.
Pada contoh 1 diatas kita melihat bahwa text yang nilainya “siang” dicek dengan fungsi takeIf yang diakhiri dengan tanda tanya(?) dan karena kondisi nya terpenenuhi maka fungsi apply dapat dieksekusi.
Pada contoh 2 diatas fungsi takeIf di akhiri dengan tanda tanya dan karena kondisinya tidak terpenuhi maka fungsi apply tidak tereksekusi.
Pada contoh 3 diatas fungsi takeIf tidak diakhiri dengan tanda tanya(?). Dan fungsi apply tetap dieksekusi.
Pada contoh 4 diatas fungsi takeIf tidak diakhiri dengan tanda tanya(?). Walaupun kondisi tidak terpenuhi fungsi apply masih tereksekusi karena tidak ada pengecekan nilai null pada fungsi takeIf diatas.
Postingan ini hanya untuk mempermudah pemahaman pemula. Untuk yang sudah expert mohon dikoreksi jika salah.
Semoga postingan ini bermanfaat bagi pembaca khususnya pemula kotlin. Jika menurut pembaca posting ini bermanfaat silahkan share dan jika ada pertanyaan boleh komentar.
Ini adalah postingan pertama saya. Jika ada kesalahan mohon kritik yang membangun. ~Ali~