unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Seleksi Kondisi

Seleksi Kondisi #

Seleksi kondisi adalah konsep dasar dalam pemrograman yang memungkinkan kita untuk membuat keputusan berdasarkan kondisi tertentu. Dalam Rust, seperti dalam banyak bahasa pemrograman lainnya, seleksi kondisi terutama dilakukan menggunakan pernyataan if, tetapi Rust juga menawarkan fitur lain seperti match yang memberikan fleksibilitas lebih besar dalam menangani berbagai kondisi.

Pernyataan if #

Pernyataan if digunakan untuk mengevaluasi ekspresi Boolean dan mengeksekusi blok kode tertentu jika kondisi tersebut bernilai true. Jika kondisi bernilai false, blok kode tersebut dilewati, dan jika ada, blok kode alternatif dapat dieksekusi menggunakan else.

Sintaks Dasar:

if condition {
    // Eksekusi jika kondisi true
} else {
    // Eksekusi jika kondisi false
}

Contoh:

fn main() {
    let number = 10;

    if number > 5 {
        println!("Number is greater than 5");
    } else {
        println!("Number is less than or equal to 5");
    }
}

Keterangan:

  • Pada contoh di atas, jika number lebih besar dari 5, maka akan mencetak “Number is greater than 5”. Jika tidak, akan mencetak “Number is less than or equal to 5”.

Pernyataan if-else if-else #

Rust juga mendukung penggunaan berantai dari beberapa kondisi menggunakan else if. Ini berguna ketika kita memiliki lebih dari satu kondisi yang ingin dievaluasi.

Sintaks:

if condition1 {
    // Eksekusi jika condition1 true
} else if condition2 {
    // Eksekusi jika condition2 true
} else {
    // Eksekusi jika semua kondisi di atas false
}

Contoh:

fn main() {
    let number = 3;

    if number == 0 {
        println!("Number is zero");
    } else if number > 0 {
        println!("Number is positive");
    } else {
        println!("Number is negative");
    }
}

Keterangan:

  • Dalam contoh ini, Rust akan mengevaluasi setiap kondisi dari atas ke bawah. Jika kondisi pertama benar, blok pertama dieksekusi; jika tidak, Rust akan terus ke else if berikutnya hingga menemukan kondisi yang benar, atau mengeksekusi blok else jika tidak ada kondisi yang benar.

if sebagai Ekspresi #

Salah satu fitur yang membedakan Rust dari banyak bahasa lain adalah bahwa pernyataan if juga bisa digunakan sebagai ekspresi yang mengembalikan nilai. Ini berarti kita dapat menggunakan if untuk menetapkan nilai ke variabel.

Sintaks:

let result = if condition {
    value_if_true
} else {
    value_if_false
};

Contoh:

fn main() {
    let condition = true;
    let number = if condition { 5 } else { 10 };

    println!("The value of number is: {}", number);
}

Keterangan:

  • Dalam contoh ini, variabel number akan mendapatkan nilai 5 jika condition bernilai true, dan 10 jika condition bernilai false. Perlu dicatat bahwa semua cabang dalam ekspresi if harus mengembalikan tipe yang sama.

Seleksi Kondisi dengan match #

Rust memiliki fitur lain untuk seleksi kondisi yang lebih kuat daripada if, yaitu match. match sangat berguna ketika Anda memiliki beberapa pola kondisi untuk diperiksa. Ini mirip dengan switch di bahasa lain, tetapi lebih fleksibel.

Sintaks:

match expression {
    pattern1 => {
        // Eksekusi jika pola sesuai dengan pattern1
    },
    pattern2 => {
        // Eksekusi jika pola sesuai dengan pattern2
    },
    _ => {
        // Eksekusi jika tidak ada pola yang sesuai
    }
}

Contoh:

fn main() {
    let number = 3;

    match number {
        1 => println!("One"),
        2 => println!("Two"),
        3 => println!("Three"),
        _ => println!("Other"),
    }
}

Keterangan:

  • Dalam contoh ini, Rust akan mencocokkan nilai number dengan setiap pola yang diberikan. Jika ada pola yang cocok, blok kode yang sesuai akan dieksekusi. _ adalah pola “default” yang akan menangkap semua nilai yang tidak cocok dengan pola yang ditentukan sebelumnya.

match dengan Destructuring #

Rust juga memungkinkan penggunaan match untuk mencocokkan dan mendestruksi data dari tipe data kompleks, seperti tuple, enum, atau struktur.

Contoh:

enum Color {
    Red,
    Green,
    Blue,
}

fn main() {
    let color = Color::Green;

    match color {
        Color::Red => println!("Color is Red"),
        Color::Green => println!("Color is Green"),
        Color::Blue => println!("Color is Blue"),
    }
}

Keterangan:

  • Pada contoh ini, match digunakan untuk mencocokkan nilai color dengan salah satu varian dari enum Color.

Destructuring Tuple:

fn main() {
    let pair = (0, -2);

    match pair {
        (0, y) => println!("First is 0 and y is {}", y),
        (x, 0) => println!("x is {} and second is 0", x),
        _ => println!("No match"),
    }
}

Keterangan:

  • Di sini, match digunakan untuk mencocokkan dan mendestruksi tuple pair. Setiap pola menentukan bagaimana bagian-bagian dari tuple harus dicocokkan.

Perbandingan if dan match #

  • Fleksibilitas: match lebih fleksibel dalam menangani berbagai kondisi dan lebih aman karena compiler memastikan semua kemungkinan kasus telah ditangani.
  • Ekspresi: Baik if maupun match dapat digunakan sebagai ekspresi yang mengembalikan nilai.
  • Kesederhanaan: if lebih sederhana dan lebih cocok untuk kondisi tunggal atau rangkaian kondisi sederhana. match lebih cocok untuk pola yang lebih kompleks atau ketika mencocokkan terhadap banyak nilai atau jenis.

Penanganan Error dengan if let dan while let #

Rust juga menyediakan sintaks if let dan while let untuk menangani kasus ketika Anda hanya peduli pada satu pola dari match.

Contoh if let:

fn main() {
    let some_option = Some(5);

    if let Some(x) = some_option {
        println!("Matched, x = {}", x);
    } else {
        println!("No match");
    }
}

Contoh while let:

fn main() {
    let mut optional = Some(0);

    while let Some(i) = optional {
        if i > 9 {
            println!("Greater than 9, quit!");
            optional = None;
        } else {
            println!("`i` is `{:?}`. Try again.", i);
            optional = Some(i + 1);
        }
    }
}

Keterangan:

  • if let digunakan ketika Anda hanya ingin mencocokkan dan menangani satu pola, sedangkan while let memungkinkan untuk terus mencocokkan dan mengulangi pola selama pola tersebut sesuai.

Kesimpulan #

Seleksi kondisi di Rust menawarkan fleksibilitas dan keamanan yang kuat dengan fitur-fitur seperti if, else if, match, dan if let. Setiap alat ini dirancang untuk memungkinkan pengembang menulis kode yang aman, mudah dibaca, dan efisien dalam menangani berbagai kondisi. Rust memberikan banyak alat yang memungkinkan pengembang untuk mengekspresikan logika seleksi kondisi dengan cara yang paling sesuai dengan masalah yang sedang dihadapi.

« Operator
Perulangan »