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
numberlebih 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 ifberikutnya hingga menemukan kondisi yang benar, atau mengeksekusi blokelsejika 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
numberakan mendapatkan nilai5jikaconditionbernilaitrue, dan10jikaconditionbernilaifalse. Perlu dicatat bahwa semua cabang dalam ekspresiifharus 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
numberdengan 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,
matchdigunakan untuk mencocokkan nilaicolordengan salah satu varian dari enumColor.
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,
matchdigunakan untuk mencocokkan dan mendestruksi tuplepair. Setiap pola menentukan bagaimana bagian-bagian dari tuple harus dicocokkan.
Perbandingan if dan match
#
- Fleksibilitas:
matchlebih fleksibel dalam menangani berbagai kondisi dan lebih aman karena compiler memastikan semua kemungkinan kasus telah ditangani. - Ekspresi: Baik
ifmaupunmatchdapat digunakan sebagai ekspresi yang mengembalikan nilai. - Kesederhanaan:
iflebih sederhana dan lebih cocok untuk kondisi tunggal atau rangkaian kondisi sederhana.matchlebih 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 letdigunakan ketika Anda hanya ingin mencocokkan dan menangani satu pola, sedangkanwhile letmemungkinkan 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.