Belajar Higher-Order Function di Kotlin

Dhe997


Higher-Order Function

Dalam mendeklarasi lambda, khususnya jika ingin ditetapkan agar dapat mengembalikan nilai, terkadang kompiler tidak dapat menentukan tipenya. Alhasil, kita perlu menuliskannya secara eksplisit. Terdapat beberapa tipe deklarasi yang dapat kita gunakan untuk mendeklarasi lambda, antara lain: 


  1. var sum: (Int) -> Int = { value -> value + value }


Tipe deklarasi pada kode di atas adalah contoh ketika kita ingin menetapkan jika fungsi tersebut memiliki 1 (satu) parameter dengan tipe kembalian Int. Untuk tipe deklarasi lainnya akan kita bahas pada modul berikutnya.
Dengan ditetapkannya tipe deklarasi pada fungsi tersebut, memungkinkan kita untuk bisa menggunakannya sebagai argumen untuk fungsi lainnya. Contohnya seperti berikut:

  1. fun main() {

  2.     printResult(10 ,sum)

  3. }

  4.  

  5. fun printResult(value: Int, sum: (Int) -> Int) {

  6.     val result = sum(value)

  7.     println(result)

  8. }

  9.  

  10. var sum: (Int) -> Int = { value -> value + value }

  11.  

  12. /*

  13.    output : 20

  14. */


Atau kita bisa melampirkannya secara langsung ketika fungsi printResult() di atas dipanggil seperti berikut:

  1. fun main() {

  2.     printResult(10){ value ->

  3.         value + value

  4.     }

  5. }

  6.  

  7. fun printResult(value: Int, sum: (Int) -> Int) {

  8.     val result = sum(value)

  9.     println(result)

  10. }

  11.  

  12. /*

  13.    output : 20

  14. */


Konsep ini dinamakan sebagai Higher-Order Function, yaitu sebuah fungsi yang menggunakan fungsi lainnya sebagai parameter, menjadikan tipe kembalian, ataupun keduanya. Yang perlu diperhatikan adalah, jika argumen terakhir dari fungsi merupakan sebuah lambda expression, maka lambda expression tersebut ditempatkan di luar parenthesis seperti pada contoh kode di atas

Posting Komentar

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.