Karat - Fungsi

Fungsi adalah blok bangunan dari kode yang dapat dibaca, dipelihara, dan dapat digunakan kembali. Fungsi adalah sekumpulan pernyataan untuk melakukan tugas tertentu. Fungsi mengatur program menjadi blok-blok kode logis. Setelah ditentukan, fungsi dapat dipanggil ke kode akses. Ini membuat kode dapat digunakan kembali. Selain itu, fungsi memudahkan untuk membaca dan memelihara kode program.

Deklarasi fungsi memberi tahu kompiler tentang nama fungsi, tipe kembalian, dan parameter. Definisi fungsi memberikan tubuh sebenarnya dari fungsi tersebut.

Sr Tidak Deskripsi fungsi
1

Defining a function

Definisi fungsi TA menentukan apa dan bagaimana tugas tertentu akan dilakukan.

2

Calling or invoking a Function

Sebuah fungsi harus dipanggil untuk menjalankannya.

3

Returning Functions

Fungsi juga dapat mengembalikan nilai bersama dengan kontrol, kembali ke pemanggil.

4

Parameterized Function

Parameter adalah mekanisme untuk meneruskan nilai ke fungsi.

Mendefinisikan Fungsi

Definisi fungsi menentukan apa dan bagaimana tugas tertentu akan dilakukan. Sebelum menggunakan fungsi, itu harus ditentukan. Badan fungsi berisi kode yang harus dijalankan oleh fungsi tersebut. Aturan untuk menamai fungsi mirip dengan variabel. Fungsi ditentukan menggunakanfnkata kunci. Sintaks untuk mendefinisikan fungsi standar diberikan di bawah ini

Sintaksis

fn function_name(param1,param2..paramN) {
   // function body
}

Deklarasi fungsi secara opsional dapat berisi parameter / argumen. Parameter digunakan untuk meneruskan nilai ke fungsi.

Contoh - Definisi fungsi sederhana

//Defining a function
fn fn_hello(){
   println!("hello from function fn_hello ");
}

Memanggil Fungsi

Sebuah fungsi harus dipanggil untuk menjalankannya. Proses ini disebut sebagaifunction invocation. Nilai untuk parameter harus diteruskan saat fungsi dipanggil. Fungsi yang memanggil fungsi lain disebutcaller function.

Sintaksis

function_name(val1,val2,valN)

Contoh: Memanggil Fungsi

fn main(){
   //calling a function
   fn_hello();
}

Di sini, main () adalah fungsi pemanggil.

Ilustrasi

Contoh berikut mendefinisikan sebuah fungsi fn_hello(). Fungsi mencetak pesan ke konsol. Itumain()function memanggil fungsi fn_hello () .

fn main(){
   //calling a function
   fn_hello();
}
//Defining a function
fn fn_hello(){
   println!("hello from function fn_hello ");
}

Keluaran

hello from function fn_hello

Mengembalikan Nilai dari Fungsi

Fungsi juga dapat mengembalikan nilai bersama dengan kontrol, kembali ke pemanggil. Fungsi seperti itu disebut fungsi balik.

Sintaksis

Salah satu dari sintaks berikut dapat digunakan untuk mendefinisikan fungsi dengan tipe kembalian.

Dengan pernyataan kembali

// Syntax1
fn function_name() -> return_type {
   //statements
   return value;
}

Sintaks singkatan tanpa pernyataan kembali

//Syntax2
fn function_name() -> return_type {
   value //no semicolon means this value is returned
}

ilustrasi

fn main(){
   println!("pi value is {}",get_pi());
}
fn get_pi()->f64 {
   22.0/7.0
}

Keluaran

pi value is 3.142857142857143

Fungsi dengan Parameter

Parameter adalah mekanisme untuk meneruskan nilai ke fungsi. Parameter merupakan bagian dari tanda tangan fungsi. Nilai parameter diteruskan ke fungsi selama pemanggilannya. Kecuali ditentukan secara eksplisit, jumlah nilai yang diteruskan ke fungsi harus sesuai dengan jumlah parameter yang ditentukan.

Parameter dapat diteruskan ke suatu fungsi menggunakan salah satu dari teknik berikut -

Lewati Nilai

Saat metode dipanggil, lokasi penyimpanan baru dibuat untuk setiap parameter nilai. Nilai dari parameter aktual disalin ke dalamnya. Oleh karena itu, perubahan yang dilakukan pada parameter di dalam metode yang dipanggil tidak berpengaruh pada argumen.

Contoh berikut mendeklarasikan variabel no, yang awalnya 5. Variabel tersebut dikirimkan sebagai parameter (berdasarkan nilai) ke mutate_no_to_zero()functionnction, yang mengubah nilainya menjadi nol. Setelah pemanggilan fungsi ketika kontrol kembali ke metode utama, nilainya akan sama.

fn main(){
   let no:i32 = 5;
   mutate_no_to_zero(no);
   println!("The value of no is:{}",no);
}

fn mutate_no_to_zero(mut param_no: i32) {
   param_no = param_no*0;
   println!("param_no value is :{}",param_no);
}

Keluaran

param_no value is :0
The value of no is:5

Lewati Referensi

Saat Anda meneruskan parameter dengan referensi, tidak seperti parameter nilai, lokasi penyimpanan baru tidak dibuat untuk parameter ini. Parameter referensi mewakili lokasi memori yang sama dengan parameter aktual yang disuplai ke metode. Nilai parameter dapat diteruskan dengan referensi dengan mengawali nama variabel dengan& .

Dalam contoh yang diberikan di bawah ini, kita memiliki variabel no , yang awalnya 5. Sebuah referensi ke variabel no diteruskan kemutate_no_to_zero()fungsi. Fungsi tersebut beroperasi pada variabel asli. Setelah pemanggilan fungsi, ketika kontrol kembali ke metode utama, nilai variabel asli akan menjadi nol.

fn main() {
   let mut no:i32 = 5;
   mutate_no_to_zero(&mut no);
   println!("The value of no is:{}",no);
}
fn mutate_no_to_zero(param_no:&mut i32){
   *param_no = 0; //de reference
}

Operator * digunakan untuk mengakses nilai yang disimpan di lokasi memori variabel param_nomenunjuk ke. Ini juga dikenal sebagai dereferencing.

Outputnya adalah -

The value of no is 0.

Meneruskan string ke suatu fungsi

Fungsi main () meneruskan objek string ke fungsi display () .

fn main(){
   let name:String = String::from("TutorialsPoint");
   display(name); 
   //cannot access name after display
}
fn display(param_name:String){
   println!("param_name value is :{}",param_name);
}

Keluaran

param_name value is :TutorialsPoint