Portal/Notes πŸ“
RustRustlings_exercise

Fungsi

Versi Bahasa Indonesia. Baca dalam Bahasa Inggris

  • Mendeklarasikan fungsi menggunakan fn, referensi: https://doc.rust-lang.org/std/primitive.fn.html
  • Kode Rust menggunakan snake case sebagai gaya konvensional untuk nama fungsi dan variabel.
  • Dalam signature fungsi, kamu harus mendeklarasikan tipe dari setiap parameter.
  • Saat mendefinisikan banyak parameter, pisahkan deklarasi parameter dengan koma.
  • Fungsi dapat mengembalikan nilai ke kode yang memanggilnya. Kita tidak memberi nama nilai kembalian, tetapi kita harus mendeklarasikan tipenya setelah tanda panah ->.
  • Rust memiliki statements dan expressions:
    • Statements adalah instruksi yang melakukan suatu tindakan dan tidak mengembalikan nilai.
    • Expressions mengevaluasi menjadi nilai hasil. Mari kita lihat beberapa contoh.
    • Jika kamu menambahkan titik koma di akhir expression, kamu mengubahnya menjadi statement, dan kemudian tidak akan mengembalikan nilai.
  • Kamu dapat melakukan return awal dari fungsi dengan menggunakan keyword return dan menentukan sebuah nilai, tetapi kebanyakan fungsi mengembalikan expression terakhir secara implisit.
  • Referensi: Functions

functions1.rs

// Add some function with the name `call_me` without arguments or a return value.
fn call_me() {
    println!("called")
}

fn main() {
    call_me(); // Don't change this line
}
  • Kita hanya perlu menambahkan fungsi baru bernama call_me tanpa nilai kembalian.
  • Kode Rust menggunakan snake case sebagai gaya konvensional untuk nama fungsi dan variabel, di mana semua huruf adalah huruf kecil dan garis bawah memisahkan kata.
  • Referensi: https://doc.rust-lang.org/book/ch03-03-how-functions-work.html

functions2.rs

// Add the missing type of the argument `num` after the colon `:`.
// Lets use i32 for the argument tyoe.
fn call_me(num: i32) {
    for i in 0..num {
        println!("Ring! Call number {}", i + 1);
    }
}

fn main() {
    call_me(3);
}
  • Dalam signature fungsi, kamu harus mendeklarasikan tipe dari setiap parameter.

    This is a deliberate decision in Rust's design: requiring type annotations in function definitions means the compiler almost never needs you to use them elsewhere in the code to figure out what type you mean. The compiler is also able to give more helpful error messages if it knows what types the function expects.

  • Saat mendefinisikan banyak parameter, pisahkan deklarasi parameter dengan koma.

  • Jadi kita hanya perlu menambahkan i32 sebagai tipe argumen/parameter.

functions3.rs

fn call_me(num: u8) {
    for i in 0..num {
        println!("Ring! Call number {}", i + 1);
    }
}

fn main() {
    // Add parameters to call_me function.
    call_me(5);
}
  • Fungsi call_me mengharapkan sebuah argumen/parameter, tambahkan 5 sebagai parameter karena fungsi mengharapkan tipe u8.

functions4.rs

// This store is having a sale where if the price is an even number, you get 10
// Rustbucks off, but if it's an odd number, it's 3 Rustbucks off.
// Don't worry about the function bodies themselves, we are only interested in
// the signatures for now.

fn is_even(num: i64) -> bool {
    num % 2 == 0
}

// 
fn sale_price(price: i64) -> i64 {
    if is_even(price) {
        price - 10
    } else {
        price - 3
    }
}

fn main() {
    let original_price = 51;
    println!("Your sale price is {}", sale_price(original_price));
}
  • Fungsi dapat mengembalikan nilai ke kode yang memanggilnya. Kita tidak memberi nama nilai kembalian, tetapi kita harus mendeklarasikan tipenya setelah tanda panah ->.
  • Di latihan ini kita hanya perlu menambahkan tipe kembalian sebagai i64.

functions5.rs

// Remove the semicolon to make it as expression
fn square(num: i32) -> i32 {
    num * num
}

fn main() {
    let answer = square(3);
    println!("The square of 3 is {answer}");
}
  • Rust memiliki statements dan expressions:
    • Statements adalah instruksi yang melakukan suatu tindakan dan tidak mengembalikan nilai.
    • Expressions mengevaluasi menjadi nilai hasil. Mari kita lihat beberapa contoh.
    • Jika kamu menambahkan titik koma di akhir expression, kamu mengubahnya menjadi statement, dan kemudian tidak akan mengembalikan nilai.
  • Kamu dapat melakukan return awal dari fungsi dengan menggunakan keyword return dan menentukan sebuah nilai, tetapi kebanyakan fungsi mengembalikan expression terakhir secara implisit.
  • Di latihan ini fungsi square mengharapkan nilai kembalian, tetapi body fungsi hanya memiliki satu baris statement. Dengan menghapus titik koma ; kita menjadikannya sebagai expression dan akan mengembalikan nilai dari num * num

Edit on GitHub

Last updated on

Fungsi | Faisal Affan