Fungsi pada Kotlin

Eric Wijaya
4 min readJan 4, 2019

--

Fungsi adalah blok dari kode yang mempunyai satu tugas yang spesifik.

Jadi ketika aplikasi butuh menjalankan tugas itu, kita dapat memanggil fungsi yang telah dibuat tadi daripada melakukan copy paste kode yang sama di beberapa tempat.

fun printGloryManchesterUnited() {
println("Glory Glory Man United")
}

Misal aplikasi kita perlu sering melakukan print Manchester United chant, kita dapat membuat fungsi untuk itu.

Kode di atas merupakan deklarasi fungsi. Pada kotlin untuk membuat fungsi menggunakan kata kunci fun, kemudian diikuti dengan nama fungsi dan kurung buka kurung tutup, kemudian blok kode di antara kurung keriting (ga tau bahasa Indonesia nya curly brace haha){ }

Untuk menggunakan fungsi cukup memanggil nama fungsi tersebut.

printGloryManchesterUnited()

Parameter Fungsi

Parameter pada fungsi seperti memberikan data input pada fungsi, jadi fungsi dapat melakukan tugas berbeda berdasarkan parameter yang diberikan.

fun printGloryChant(team: String) {
println("Glory glory $team")
}
printGloryChant("Manchester United")

Parameter diberikan di antara kurung buka dan kurung tutup setelah nama fungsi, berisi nama parameter dan type parameter.

Fungsi printGloryChant di atas akan melakukan print chant berdasarkan nama team yang diberikan sebagai parameter fungsi.

O ya ada istilah parameter dan argument. Perbedaannya adalah parameter digunakan saat deklarasi fungsi. Saat memanggil fungsi kita menyediakan nilai sebagai argument dari fungsi.

Satu fungsi dapat memiliki beberapa parameter ataupun juga tidak memiliki parameter.

fun ourStrikers(striker1: String, striker2: String) {
println("Man United dynamic duo: $striker1 and $striker2")
}
ourStikers("Dwight Yorke", "Andy Cole")
Result:
> Man United dynamic duo: Dwight Yorke and Andy Cole

Terkadang untuk fungsi yang memiliki beberapa parameter, akan lebih membantu apabila kita memakai nama argument nya saat memanggil fungsi tersebut. Jadi mempermudah kita mengetahui apa maksud dari argument itu.

ourStrikers(stiker1 = "Dwight Yorke", stiker2 = Andy Cole)

Parameter pada fungsi default nya adalah konstan jadi tidak dapat dimodifikasi.

fun incrementGoalCount(goal: Int) {
goal += 1
println(goal)
}
// Error : val cannot be reassigned

Default Parameter

Kita dapat memberikan default value untuk paramenter fungsi.

fun ourStikers(striker1: String = "Eric Cantona", striker2: String){
println("Man United dynamic duo: $striker1 and $striker2")
}
ourStikers("Andy Cole")
Result:
> Man United dynamic duo: Eric Cantona and Andy Cole

Perbedaannya adalah pada parameter pertama disediakan default value = “Eric Cantona”, yang berarti ketika tidak ada nilai yang disertakan untuk parameter pertama default nya “Eric Cantona”.

Ini berguna ketika suatu nilai akan sering menjadi isi dari paramater itu, yang mana akan meringkas kode kita saat memanggil fungsi tersebut.

Misal dalam contoh di atas Eric Cantona hampir selalu menjadi striker Manchester United dalam setiap pertandingan, jadi bisa memanggil fungsi ourStikers lebih ringkas.

Return Value

Fungsi dapat memiliki return value. Pemanggil fungsi dapat memasukkan nilai return value fungsi ke suatu variable atau konstan.

fun ourStrikers(striker1: String, striker2: String): String {
return "Dynamic duo: $striker1 and $striker2"
}

Untuk mendeklarasikan fungsi yang memiliki return value kita menambahkan titik dua (:) setelah kurung buka dan kurung tutup dan diikuti dengan type dari return value nya. Dalam contoh di atas return value nya bertipe String.

Pada kotlin kita bisa menggunakan Pair jika memerlukan 2 return value.

fun ourStrikers(striker1: String, striker2: String, goals: Int): Pair<String, Int> {
return Pair("$striker1 and $striker2 scores $goals for Manchester United", goals)
}

Fungsi ini mengembalikan 2 nilai dalam Pair yaitu String dan Int.

Fungsi Single Expression

Fungsi ini hanya terdiri dari satu expression, dapat langsung dimasukkan ke dalam fungsi dengan menggunakan = tanpa perlu menggunakan kurung keriting maupun return value.

fun ourStrikers(striker1: String, striker2: String) = "Man United Dymanic Duo is $striker1 and $striker2"

Overloading

Beberapa fungsi menggunakan nama yang sama.

Contoh di atas ada menerapkan overloading.

fun ourStrikers(striker1: String, striker2: String): String {
return "Dynamic duo: $striker1 and $striker2"
}
fun ourStrikers(striker1: String, striker2: String, goals: Int): Pair<String, Int> {
return Pair("$striker1 and $striker2 scores $goals for Manchester United", goals)
}

Namun, kompiler harus tetap bisa membedakan fungsi — fungsi ini. Setiap kali memanggil fungsi ini harus jelas fungsi mana yang dipanggil.

Untuk membedakan fungsi overloading:

  • Jumlah parameter berbeda
  • Tipe parameter berbeda

Hanya menggunakan return value berbeda tidak cukup untuk membedakan fungsi.

fun goalScorer(playerName: String, goal: Int): String {
return "$playerName score $goal"
}
fun goalScorer(playerName: String, goal: Int): Int {
return goal
}

Dua fungsi di atas mempunyai nama yang sama, jumlah parameter sama dan tipe parameter sama, kotlin tidak bisa membedakan 2 fungsi di atas.

Kesimpulan

Pada tulisan ini kita belajar mengenai fungsi di kotlin.

  • Penggunaan fungsi. Satu tugas spesifik saja.
  • Parameter fungsi, bisa tanpa parameter ataupun beberapa parameter. Parameter digunakan sebagai input dari fungsi sehingga bisa menghasilkan output berdasarkan input yang diberikan.
  • Default value pada parameter fungsi.
  • Return value
  • Fungsi dengan Single Expression
  • Overloading

--

--

No responses yet