Skip to main content

Function Single Expression

Single Expression Function adalah cara menulis function Kotlin secara lebih singkat ketika isi function hanya terdiri dari satu expression.

Pada function biasa, kita menggunakan { } untuk menuliskan isi function. Namun, jika function hanya membutuhkan satu baris kode, kita dapat menggunakan tanda =.

Sintaks Single Expression Function​

Bentuk umum:

fun namaFunction(parameter: TipeData): TipeReturn = expression

Contoh:

fun perkalianLima(x: Int): Int = x * 5

Function perkalianLima() menerima parameter x bertipe Int, kemudian mengembalikan hasil dari x * 5.

Jika function dipanggil:

val result = perkalianLima(10)

Maka nilai result adalah:

50

Perbandingan dengan Function Biasa​

Function yang sama jika ditulis menggunakan block body:

fun perkalianLima(x: Int): Int {
return x * 5
}

Dengan Single Expression Function, function tersebut dapat ditulis lebih singkat:

fun perkalianLima(x: Int): Int = x * 5

Kedua function tersebut menghasilkan nilai yang sama.

Single Expression Function dengan Unit​

Single Expression Function juga dapat digunakan pada function yang tidak mengembalikan nilai secara khusus.

Contohnya:

fun sayHello(name: String): Unit = println("Hello $name")

Function sayHello() menerima parameter name, kemudian menjalankan println().

Pemanggilannya:

sayHello("Ucup")

Output:

Hello Ucup

Contoh Program Lengkap​

Berikut contoh program lengkap menggunakan Single Expression Function:

fun perkalianLima(x: Int): Int = x * 5

fun sayHello(name: String): Unit = println("Hello $name")

fun main() {
val result = perkalianLima(10)

println("Jumlah perkalian $result")
sayHello("Ucup")
}

Output:

Jumlah perkalian 50
Hello Ucup

Menggunakan Type Inference​

Kotlin dapat mengetahui tipe return function secara otomatis melalui type inference.

Contoh:

fun perkalianLima(x: Int) = x * 5

Kotlin akan mengetahui bahwa function tersebut mengembalikan nilai bertipe Int.

Sehingga:

fun perkalianLima(x: Int): Int = x * 5

dapat ditulis menjadi:

fun perkalianLima(x: Int) = x * 5

Untuk function sederhana, cara ini membuat kode menjadi lebih ringkas.

Contoh Single Expression Function​

Penjumlahan​

fun tambah(a: Int, b: Int) = a + b

Contoh penggunaan:

val result = tambah(10, 20)

println(result)

Output:

30

Pengurangan​

fun kurang(a: Int, b: Int) = a - b

Perkalian​

fun kali(a: Int, b: Int) = a * b

Pembagian​

fun bagi(a: Int, b: Int) = a / b

Menghitung Kuadrat​

fun kuadrat(x: Int) = x * x

Contoh:

println(kuadrat(5))

Output:

25

Mengecek Bilangan Genap​

Single Expression Function juga dapat digunakan untuk menghasilkan nilai Boolean.

fun isGenap(number: Int) = number % 2 == 0

Contoh penggunaan:

println(isGenap(10))
println(isGenap(7))

Output:

true
false

Membuat Greeting​

fun greeting(name: String) = "Hello, $name!"

Penggunaan:

val message = greeting("Ucup")

println(message)

Output:

Hello, Ucup!

Single Expression dengan Return Type​

Kita tetap dapat menentukan return type secara eksplisit.

Contoh:

fun tambah(a: Int, b: Int): Int = a + b

Return type function tersebut adalah Int.

Contoh lainnya:

fun isLulus(nilai: Int): Boolean = nilai >= 75

Function tersebut mengembalikan Boolean.

Sedangkan:

fun greeting(name: String): String = "Hello, $name!"

Function tersebut mengembalikan String.

Single Expression vs Block Body​

Perhatikan perbedaan berikut.

Menggunakan Block Body​

fun perkalianLima(x: Int): Int {
return x * 5
}

Menggunakan Single Expression​

fun perkalianLima(x: Int): Int = x * 5

Single Expression lebih ringkas karena kita tidak membutuhkan:

  • { }
  • keyword return

Function dengan Beberapa Statement​

Jika function memiliki beberapa statement, gunakan block body.

Contoh:

fun prosesData(name: String) {
println("Memproses data...")
println("Nama: $name")
println("Data selesai diproses")
}

Function tersebut memiliki beberapa proses sehingga lebih tepat menggunakan { }.

Single Expression tidak cocok untuk kasus seperti ini karena function tidak hanya memiliki satu expression.

Kapan Menggunakan Single Expression Function?​

Gunakan Single Expression Function ketika:

  • Function hanya memiliki satu expression.
  • Logika function sederhana.
  • Function hanya melakukan satu operasi.
  • Function menghasilkan satu nilai.
  • Penulisan satu baris membuat kode lebih mudah dibaca.

Contoh:

fun luasPersegi(sisi: Int) = sisi * sisi

Contoh lainnya:

fun isLulus(nilai: Int) = nilai >= 75

Kapan Menggunakan Block Body?​

Gunakan block body ketika function:

  • Memiliki beberapa statement.
  • Memiliki beberapa langkah proses.
  • Membutuhkan beberapa kondisi atau operasi.
  • Membutuhkan kode yang lebih kompleks.

Contoh:

fun cekNilai(nilai: Int) {
println("Nilai: $nilai")

if (nilai >= 75) {
println("Status: Lulus")
} else {
println("Status: Tidak Lulus")
}
}

Function tersebut lebih mudah dibaca menggunakan block body.

Kelebihan Single Expression Function​

Beberapa kelebihan Single Expression Function:

  1. Kode lebih singkat

    Tidak membutuhkan { } dan return.

  2. Lebih mudah dibaca

    Untuk function sederhana, tujuan function dapat terlihat langsung dalam satu baris.

  3. Mengurangi boilerplate

    Kita tidak perlu menulis kode tambahan yang tidak diperlukan.

  4. Cocok untuk function sederhana

    Terutama untuk function yang hanya melakukan operasi atau menghasilkan satu nilai.

Contoh:

fun luasLingkaran(radius: Double) = 3.14 * radius * radius

Contoh Program Lengkap​

Berikut contoh program yang menggunakan beberapa Single Expression Function:

fun tambah(a: Int, b: Int) = a + b

fun kurang(a: Int, b: Int) = a - b

fun kali(a: Int, b: Int) = a * b

fun kuadrat(x: Int) = x * x

fun isGenap(number: Int) = number % 2 == 0

fun greeting(name: String) = "Hello, $name!"

fun main() {
println("Hasil tambah: ${tambah(10, 5)}")
println("Hasil kurang: ${kurang(10, 5)}")
println("Hasil kali: ${kali(10, 5)}")
println("Hasil kuadrat: ${kuadrat(5)}")
println("Apakah 10 genap? ${isGenap(10)}")
println(greeting("Ucup"))
}

Output:

Hasil tambah: 15
Hasil kurang: 5
Hasil kali: 50
Hasil kuadrat: 25
Apakah 10 genap? true
Hello, Ucup!

Kesimpulan​

Single Expression Function memungkinkan kita menulis function sederhana menggunakan tanda = tanpa menggunakan block body { }.

Bentuk umum:

fun namaFunction(parameter: TipeData): TipeReturn = expression

Contoh:

fun perkalianLima(x: Int): Int = x * 5

Dengan type inference, return type dapat ditulis lebih singkat:

fun perkalianLima(x: Int) = x * 5

Perbandingan:

// Block Body
fun perkalianLima(x: Int): Int {
return x * 5
}

// Single Expression
fun perkalianLima(x: Int): Int = x * 5

Jadi, prinsip sederhananya:

tip

Jika sebuah function hanya membutuhkan satu expression, kita dapat menggunakan Single Expression Function dengan tanda = untuk membuat kode menjadi lebih singkat dan mudah dibaca.