Fungsi tingkat tinggi higher-order functions


Fungsi tingkat tinggi adalah salah satu konsep yang kuat dalam pemrograman Kotlin. Secara sederhana, fungsi tingkat tinggi adalah fungsi yang dapat menerima fungsi lain sebagai parameter atau mengembalikan fungsi. Ini memungkinkan kita untuk membuat kode yang lebih modular dan fleksibel.

1. Pengertian Fungsi Tingkat Tinggi

Dengan fungsi tingkat tinggi, kita dapat mengoperasikan fungsi sebagai bagian dari fungsi lain, yang sering kali mengarah pada pengembangan aplikasi yang lebih bersih dan efisien. Berikut adalah beberapa contoh penggunaan fungsi tingkat tinggi.

2. Membuat Fungsi Tingkat Tinggi

Mari kita mulai dengan mendefinisikan fungsi tingkat tinggi sederhana:

fun operasiMatematika(a: Int, b: Int, operasi: (Int, Int) -> Int): Int {
    return operasi(a, b)
}

Penjelasan:

  • operasiMatematika adalah fungsi yang menerima dua parameter bertipe Int dan satu parameter fungsi (operasi).
  • Parameter operasi adalah fungsi yang mengambil dua Int dan mengembalikan Int.

3. Menggunakan Fungsi Tingkat Tinggi

Selanjutnya, kita akan melihat bagaimana cara menggunakan fungsi operasiMatematika yang telah kita buat:

fun jumlah(a: Int, b: Int): Int {
    return a + b
}

fun kurang(a: Int, b: Int): Int {
    return a - b
}

fun main() {
    val hasilJumlah = operasiMatematika(5, 3, ::jumlah)
    println("Hasil Jumlah: $hasilJumlah") // Output: Hasil Jumlah: 8

    val hasilKurang = operasiMatematika(5, 3, ::kurang)
    println("Hasil Kurang: $hasilKurang") // Output: Hasil Kurang: 2
}

Penjelasan:

  • Kita mendefinisikan dua fungsi, jumlah dan kurang, lalu mengoperasikannya ke dalam fungsi operasiMatematika.
  • Notasi ::jumlah digunakan untuk mereferensikan fungsi jumlah sebagai parameter.


4. Mengembalikan Fungsi dari Fungsi

Fungsi juga dapat mengembalikan fungsi lain. Berikut ini adalah contoh cara melakukannya:

fun buatPenambah(penambahan: Int): (Int) -> Int {
    return { angka: Int -> angka + penambahan }
}

fun main() {
    val penambahDua = buatPenambah(2)
    println(penambahDua(5)) // Output: 7
}

Penjelasan:

  • Fungsi buatPenambah mengembalikan fungsi yang akan menambah nilai dari penambahan ke angka.
  • Kita dapat menggunakan penambahDua yang dihasilkan untuk menambahkan 2 ke angka yang diberikan.


5. Fungsi Lambda

Kotlin juga mendukung penggunaan fungsi dengan pendekatan lambda. Fungsi lambda adalah ekspresi anonim yang bisa disimpan dalam variabel atau digunakan sebagai argumen. Berikut adalah contoh cara menggunakannya:

fun main() {
    val angkaList = listOf(1, 2, 3, 4, 5)

    val hasil = angkaList.filter { it % 2 == 0 } // Menggunakan lambda untuk memfilter angka genap
    println("Angka Genap: $hasil") // Output: Angka Genap: [2, 4]
}

Penjelasan:

  • Di sini, kita menggunakan fungsi filter dan melewatkan lambda untuk memfilter angka genap dari angkaList.


Kesimpulan

Fungsi tingkat tinggi adalah fitur penting dalam Kotlin yang dapat meningkatkan kejelasan dan modularitas kode Anda. Dengan menggunakan fungsi tingkat tinggi, Anda dapat membuat kode yang lebih fleksibel dan mudah dibaca.

Semoga tutorial ini membantu Anda memahami konsep fungsi tingkat tinggi dalam Kotlin. Selamat mencoba!