Rust - Control Flow (Condition)

Seperti namanya, fungsinya adalah mengatur arus/jalan dari program kita.
Apakah kita harus belok kanan, ataukah kiri,
ataukah putar balik,
itulah bahasa sederhana dari Control Flow

Semua materi merupakan rangkuman belajar.

Untuk bacaan yang lebih langkap & update, dipersilahkan akses pada
The Book

Adapun control flow di Rust meliputi

  • condition
    • if & else
    • match
  • iteration/repetition
    • loop
    • while
    • for in
  • control flow keyword
    • break
    • continue
    • juga support control flow label dengan 'label:

if & else

fn main() {
    let umur = 21;

    if umur < 18 {
        println!("kemudaan");
    } else if umur > 60 {
        println!("kayaknya waktunya pensiun");
    } else {
        println!("boleh lah");
    }

    // Karena if else 
    // merupakan expression 
    // ( dapat mengembalikan nilai )
    // kita dapat menggunakannya ke dalam variable
    let umur = if umur < 18 {
        "kemudaan"
    } else if umur > 60 {
        "kayaknya waktunya pensiun"
    } else {
        "boleh lah"
    };
    // pada contoh di atas 
    // kita menggunakan 
    // shadowing pada variable umur
    // & expression untuk mengembalikan nilai

    println!("{}", umur);
}
  • Kita tidak perlu menuliskan kurung sebagai bungkus dari kondisi
  • Body kondisi dibungkus dengan kurung kurawal { }
  • Karena merupakan expression, kita dapat menggunakannya ke dalam variable.
  • Kita juga dapat menggunakan expression sebagai return di dalam body kondisinya
  • Bila menggunakannya sebagai expression, pastikan nilai return bertipe data sama.
  • if & else hanya menerima nilai boolean ke dalam kondisinya, tidak seperti JavaScrip yang dapat menerima nilai truly/falsy

match

Pada Dasarnya match seperti switch pada beberapa bahasa pemrograman lain.
Nah, bedanya di Rust kita harus menangani segala kemungkinan yang terjadi.

fn main() {
    let nilai = 90;

    match nilai {
        0 => println!("Wah ini sih parah"),
        1 | 2 | 3 => println!("Niat ngga sih?"),
        4..=35 => println!("F"),
        31..=50 => {
            println!("Hmmm");
            println!("E");
        },
        51..=65 => println!("D"),
        66..=75 => println!("C"),
        76..=85 => println!("B"),
        86..=98 => println!("A"),
        99..=100 => println!("A+"),
        _ => println!("???"),
    }

    let boolean = true;

    let boolean = match boolean {
        false => 0,
        true => 1,
    };

    println!("{}", boolean);

}
  • Nilai yang akan diperiksa, tidak perlu tanda kurung
  • Kurung kurawa sebagai body pengecekan & kondisi (apabila lebih dari 1 baris).
  • => dan , sebagai batas tiap kondisi
  • _ digunakan sebagai else atau default, kemungkinan yang lain akan masuk ke dalam kondisi ini
  • Kita juga dapat menggunakannya sebagai expression.

    pastikan nilai return bertipe data sama

Untuk control flow yang lain akan dibahas secara terpisah.

Terima kasih.

18