TeknoCerdas.com – Salam cerdas untuk kita semua. Masih dalam seri belajar bahasa pemrograman Rust. Pada tulisan kali ini TeknoCerdas masih akan membahas bagaimana membuat dan menjalankan fungsi dalam bahasa pemrograman Rust.
Jika anda belum membaca seri lainnya dari tulisan ini silahkan menuju link berikut.
- Mengenal Bahasa Pemrograman Rust dari Mozilla – Bagian 1
- Mengenal Bahasa Pemrograman Rust Bagian 2: Tipe Data Integer dan Float
- Mengenal Bahasa Pemrograman Rust Bagian 3: Tipe Data Tuple dan Array
- Mengenal Bahasa Pemrograman Rust Bagian 4: Tipe Data Boolean dan Char
Pada hampir setiap bahasa pemrograman mengenal istilah fungsi yaitu kumpulan dari blok kode yang dapat digunakan secara berulang-ulang untuk tujuan tertentu.
Fungsi pada Rust
Pada seri belajar bahasa pemrograman Rust yang sudah ditulis di TeknoCerdas sebenarnya kita sudah sering menggunakan fungsi secara tidak sadar. Fungsi yang sering ditulis adalah fungsi fn main()
. Dimana fungsi ini adalah fungsi utama yang akan dieksekusi ketika suatu program Rust dijalankan.
Pada Rust cara untuk mendeklarasikan sebuah fungsi diawali dengan kata kunci fn
diikuti dengan nama fungsinya.
fn nama_fungsi() {
// blok kode
}
Konvensi penamaan fungsi pada Rust menggunakan snake case yaitu huruf kecil dengan pemisah garis bawah untuk setiap kata.
fn main() {
println!("Hello Rust");
hello_world();
}
fn hello_world() {
println!("Hello World");
}
Pada contoh diatas kita membuat fungsi bernama hello_world
. Pada fungsi tersebut terdapat perintah untuk mencetak String “Hello World” ke output.
Untuk memanggil fungsi digunakan nama fungsi tersebut kemudian diikuti dengan tanda kurung buka tutup ()
.
Pada Rust urutan pembuatan fungsi tidak menentukan bagaimana fungsi tersebut dapat dipanggil. Pada contoh diatas fungsi hello_world
didefinisikan setelah main
tetapi hello_world
tetap dapat dipanggil pada main
meskipun ia didefinisikan belakangan.
Parameter pada Fungsi
Parameter adalah satu atau lebih variabel yang menjadi bagian dari sebuah fungsi. Ketika sebuah fungsi memiliki parameter maka ketika ia dipanggil harus diberikan argumen yang sesuai dengan parameternya.
fn main() {
perkalian(5, 4);
perkalian(10, 10);
}
fn perkalian(a: i32, b: i32) {
println!("Perkalian {} x {} = {}", a, b, a * b);
}
Pada contoh diatas fungsi perkalian
memiliki dua parameter yaitu variabel a
dan b
. Keduanya bertipe integer 32 bit i32
. Pada fungsi tersebut nilai dari variabel a
dan b
dikalikan untuk ditampilkan hasilnya.
Ketika fungsi perkalian
dipanggil maka ada dua argumen yang harus diberikan yaitu angka 1 dan angka 2. Jika dijalankan maka output dari contoh kode diatas adalah seperti di bawah.
Perkalian 5 x 4 = 20
Perkalian 10 x 10 = 100
Fungsi dengan Nilai Balik
Sebuah fungsi juga dapat memiliki nilai balik atau return value. Contoh-contoh fungsi sebelumnya adalah fungsi yang tidak memiliki nilai balik. Dalam bahasa pemrograman lain sering disebut void
.
Sebagian besar fungsi yang dibuat dalam kode program adalah fungsi yang memiliki nilai balik. Dengan memiliki nilai balik maka interaksi antar komponen pada program dapat dilakukan tanpa perlu global variabel.
Untuk membuat fungsi yang memiliki nilai balik maka harus ditentukan tipe data apa yang dikembalikan. Hal tersebut ditandai dengan simbol ->
anak panah kanan.
fn main() {
println!("Perkalian {} x {} = {}", 5, 4, kali(5, 4));
println!("Pembagian {} : {} = {}", 10, 5, bagi(10, 5));
}
fn kali(a: i32, b: i32) -> i32 {
a * b
}
fn bagi(a: i32, b: i32) -> i32 {
return a / b;
}
Perkalian 5 x 4 = 20
Pembagian 10 : 5 = 2
Pada contoh diatas fungsi kali
dan bagi
mengembalikan nilai balik beriku i32
. Namun ada yang menarik yaitu perbedaan cara mengembalikan nilai dari kedua fungsi tersebut.
Pada fungsi kali
tidak ada perintah untuk mengembalikan nilai hanya sebuah statemen a * b
tapi Rust memperbolehkannya. Ini yang disebut dengan implicit return. Secara tidak langsung statemen terakhir akan digunakan sebagai nilai balik dengan syarat tidak perlu diakhiri dengan titik koma ;
.
Sedangkan pada fungsi bagi
terdapat kata kunci return
yang jelas menunjukkan bahwa fungsi tersebut mengembalikan nilai.