Halo teman-teman semuanya, pada artikel sebelumnya kita sudah membahas tentang control flow di Rust, mulai dari percabangan dengan if/else
, perulangan dengan loop
, while
, dan for
, hingga ekspresi match
. Sekarang kita akan melanjutkan ke topik penting lainnya yaitu function atau fungsi di Rust.
Fungsi adalah blok kode yang bisa dipanggil berulang kali. Dengan fungsi, kita bisa memecah program menjadi bagian-bagian kecil yang lebih terstruktur, mudah dibaca, dan bisa digunakan kembali. Hampir semua bahasa pemrograman modern memiliki konsep fungsi, termasuk Rust.
Di Rust, fungsi dideklarasikan menggunakan keyword fn
. Fungsi bisa memiliki parameter, bisa mengembalikan nilai (return value), atau bisa juga tidak mengembalikan apa-apa. Mari kita bahas satu per satu.
Membuat Fungsi Sederhana
Fungsi paling sederhana adalah fungsi tanpa parameter dan tanpa return value.
fn main() {
say_hello();
}
fn say_hello() {
println!("Hello dari fungsi!");
}
Pada contoh di atas, kita membuat fungsi say_hello
yang hanya mencetak teks ke layar. Fungsi ini dipanggil dari dalam main
.
Fungsi dengan Parameter
Fungsi bisa menerima parameter, yaitu nilai yang dikirimkan saat fungsi dipanggil. Parameter di Rust harus memiliki tipe data yang jelas.
fn main() {
greet("Andi");
greet("Budi");
}
fn greet(name: &str) {
println!("Halo, {}!", name);
}
Pada contoh ini, fungsi greet
menerima parameter name
dengan tipe &str
(string slice), lalu mencetak sesuai nama yang diberikan.
Fungsi dengan Return Value
Rust menggunakan tanda panah ->
untuk mendefinisikan tipe data return value dari fungsi. Nilai yang dikembalikan adalah hasil dari ekspresi terakhir dalam fungsi, atau bisa juga dengan keyword return
.
fn main() {
let hasil = tambah(5, 7);
println!("Hasil penjumlahan: {}", hasil);
}
fn tambah(a: i32, b: i32) -> i32 {
a + b // ekspresi terakhir otomatis menjadi return value
}
Di sini fungsi tambah
mengembalikan nilai i32
hasil dari a + b
. Kita tidak perlu menuliskan return a + b;
kecuali memang ingin keluar lebih awal.
Return dengan Keyword return
Kadang kita perlu menggunakan return
secara eksplisit, misalnya ketika ada kondisi tertentu.
fn main() {
let hasil = bagi(10, 0);
println!("Hasil: {}", hasil);
}
fn bagi(a: i32, b: i32) -> i32 {
if b == 0 {
return 0; // keluar lebih awal jika pembagi nol
}
a / b
}
Pada contoh ini, jika nilai b
adalah 0, maka fungsi bagi
akan langsung mengembalikan 0
dan tidak melanjutkan ke baris selanjutnya.
Fungsi dengan Beberapa Parameter
Fungsi bisa memiliki lebih dari satu parameter, dengan setiap parameter wajib memiliki tipe data.
fn main() {
let luas = hitung_luas(5, 10);
println!("Luas persegi panjang: {}", luas);
}
fn hitung_luas(panjang: i32, lebar: i32) -> i32 {
panjang * lebar
}
Fungsi hitung_luas
menerima dua parameter (panjang
dan lebar
) dan mengembalikan hasil perkalian keduanya.
Kesimpulan
Pada artikel ini kita telah mempelajari cara membuat fungsi di Rust, baik fungsi sederhana tanpa parameter, fungsi dengan parameter, fungsi dengan return value, penggunaan keyword return
, hingga fungsi dengan banyak parameter.
Pada artikel berikutnya, kita akan membahas konsep paling khas di Rust yaitu Ownership, yang membedakan Rust dengan bahasa pemrograman lainnya dan membuatnya lebih aman dalam mengelola memori.
Terima Kasih