Belajar Dasar Kotlin: Fungsi
Saat membuat program, kita akan memerlukan untuk menata kode berdasarkan tujuan dari kode. Kita juga mungkin ingin mengurangi kode yang diulang-ulangi. Kedua permasalahan itu bisa di selesaikan dengan fungsi. Fungsi merupakan kumpulan kode yang dideklarasikan sekali dan dapat dijalankan kapan pun.
Mendeklarasikan Fungsi
Pada Kotlin, fungsi dideklarasikan dengan keyword fun
. Contohnya seperti berikut:
fun sayGreeting() {
println("Good morning").
}
sayGreeting
adalah nama fungsi. Kode dalam kurung kurawal (blok kode) merupakan kode yang akan
dijalankan saat fungsi tersebut dipanggil.
Fungsi dapat di panggil seperti berikut:
sayGreeting()
// Output:
// Good morning
Parameter
Parameter merupakan variabel yang diberikan ke fungsi. Argumen adalah nilai dari sebuah parameter yang diberikan saat fungsi dipanggil. Parameter dari sebuah fungsi bisa dideklarasikan seperti berikut:
fun sayGreeting(time: String) {
println("Good $time")
}
sayGreeting("night") // Good night
sayGreeting("afternoon") // Good afternoon
sayGreeting("morning") // Good morning
Saat mendeklarasikan parameter, tipe data parameter harus ditentukan. time
merupakan nama
parameter dan String
merupakan tipe data parameter tersebut. "night"
, "afternoon"
dan
"morning"
merupakan argument untuk parameter time
.
Fungsi dapat memiliki banyak parameter, setiap parameter bisa di pisahkan dengan koma (,
).
fun sayGreeting(time: String, name: String) {
println("Good $time, My name $name")
}
sayGreeting("morning", "Asri") // Good morning, My name Asri
sayGreeting("morning", "Rizal") // Good morning, My name Rizal
Kotlin akan secara otomatis memasangkan argumen dan parameter berdasarkan kesamaan urutan.
"morning"
merupakan argumen dari parameter time
, karena sama-sama berada pada urutan 1. "Asri"
dan "Rizal"
merupakan argumen dari parameter name
, karena sama-sama berada pada urutan 2.
Named Arguments
Argumen dan parameter juga bisa dipasangkan berdasarkan nama yang diberikan kepada argumen saat pemanggilan fungsi.
sayGreeting(name = "Gagap", time = "night") // Good night, My name Gagap
"Gagap"
digunakan sebagai argumen dari parameter name
dan"night"
digunakan sebagai argumen
dari parameter time
.
Default Arguments
Parameter pada bahasa Kotlin bisa mempunyai sebuah nilai default. Nilai default ini akan digunakan jika argumen untuk parameter tersebut tidak ditentukan.
fun sayGreeting(time: String = "morning", name: String) {
println("Good $time, My name $name")
}
sayGreeting(name = "Apri") // Good morning, My name Apri
sayGreeting("night", name = "Siti") // Good night, My name Siti
Saat fungsi sayGreeting
dipanggil tanpa ditentukan argumen untuk parameter time
, maka
"morning"
akan digunakan sebagai argumen dari parameter tersebut.
Mengembalikan Nilai
Fungsi dapat menghasilkan/mengembalikan sebuah nilai. Agar sebuah fungsi bisa menghasilkan nilai, maka harus ditentukan tipe data nilai yang dihasilkan. Tipe data ini diletakkan setelah titik dua sebelum kurung kurawal.
fun add(left: Int, right: Int): Int {
return left + right
}
println(add(1, 2)) // 3
println(add(3, 4)) // 7
Int
merupakan tipe data dari nilai yang dihasilkan fungsi add
. return
digunakan untuk
mengembalikan nilai. Kode setelah return
harus berupa ekspresi.
return
akan menghentikan fungsi dan meloncati semua kode setelahnya. return
juga bisa digunakan
pada fungsi yang tidak mengembalikan nilai. Dalam kasus ini, return
tidak membutuhkan ekspresi.
fun sayName(name: String) {
if (name == "")
return
println("My name is $name")
}
sayName("") // Tidak ada output
sayName("Rudi") // My name is Rudi
Jika tipe data nilai yang dihasilkan suatu fungsi tidak ditentukan, maka tipe data Unit
secara
otomatis digunakan. Tipe data Unit
menyatakan bahwa fungsi tidak menghasilkan nilai apa pun.
Deklarasi fungsi di atas bisa ditulis juga sebagai:
fun sayName(name: String): Unit { ... }
Single-expression Function
Jika sebuah fungsi hanya mengembalikan nilai, maka kurung kurawal bisa diganti dengan =
dan nilai
yang dikembalikan diletakkan setelah =
.
fun add(left: Int, right: Int): Int = left + right
Fungsi dalam bentuk di atas disebut dengan Single-expression function. Saat fungsi dalam bentuk di
atas maka, tipe data yang dihasilkan fungsi bisa dihilangkan dan tipe data yang dihasilkan akan
ditentukan berdasarkan tipe data ekspresi setelah =
.
fun add(left: Int, right: Int) = left + right
Fungsi Bersarang
Fungsi bisa berada di dalam fungsi lain. Fungsi jenis ini bisa mengakses dan mengubah variabel yang dimiliki fungsi di luarnya.
fun cekIdentitas(id: String, nama: String, password: String): Boolean {
var benar = true
fun cekString(str: String, field: String) {
if (str == "") {
println("$field kosong")
benar = false
} else {
println("$field benar")
}
}
cekString(id, "Id")
cekString(nama, "Nama")
cekString(password, "Password")
return benar
}
println(cekIdentitas("", "", ""))
// Id kosong
// Nama kosong
// Password kosong
// false
println(cekIdentitas("ron", "", ""))
// Id benar
// Nama kosong
// Password kosong
// false
println(cekIdentitas("ron", "Ronald", ""))
// Id benar
// Nama benar
// Password kosong
// false
println(cekIdentitas("ron", "Ronald", "1234567890"))
// Id benar
// Nama benar
// Password benar
// true
Fungsi cekString
hanya bisa di panggil di dalam fungsi cekIdentitas
. Fungsi cekString
bisa
mengakses dan menggubah variabel yang dideklarasikan di dalam fungsi cekIdentitas
, contohnya
seperti variabel benar
.