Kotlin Android Development: Function Standard

How to use function let, apply, also and takeif

Ali Agus
Nusanet Developers
5 min readDec 15, 2018

--

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.

  1. let{ }

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

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{}

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.

contoh 1. let tanpa fungsi print di dalam blocknya.
hasil dari contoh 1.
contoh 2. also tanpa fungsi print di dalam blocknya.
hasil dari contoh 2.
contoh 3. apply tanpa fungsi print di dalam blocknya.
hasil dari contoh 3.

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.

contoh 1. fungsi takeIf dengan diakhiri tanda tanya(?)
hasil contoh 1.

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.

contoh 2. fungsi takeIf dengan diakhiri tanda tanya(?)
hasil contoh 2.

Pada contoh 2 diatas fungsi takeIf di akhiri dengan tanda tanya dan karena kondisinya tidak terpenuhi maka fungsi apply tidak tereksekusi.

contoh 3. fungsi takeIf tanpa diakhiri tanda tanya(?)
hasil contoh 3.

Pada contoh 3 diatas fungsi takeIf tidak diakhiri dengan tanda tanya(?). Dan fungsi apply tetap dieksekusi.

contoh 4. funsi takeIf tanpa diakhiri dengan tanda tanya(?)
hasil contoh 4.

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~

--

--