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