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 blokelse
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 nilai5
jikacondition
bernilaitrue
, dan10
jikacondition
bernilaifalse
. Perlu dicatat bahwa semua cabang dalam ekspresiif
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 nilaicolor
dengan 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,
match
digunakan untuk mencocokkan dan mendestruksi tuplepair
. 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
maupunmatch
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, sedangkanwhile 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.