Sebenarnya conditional itu kayak kekuatan super, kalian bisa menggunakan conditional untuk membuat keputusan. Kekuatan ini bekerja dengan cara melalukan pengecekan pada condition of the expression dan bertindak sesuai dengan condition of the expression tersebut.
Tipe-tipe dari conditional expression
-
if
expression -
if let
expression -
match
expression
1. If expression
Rust memiliki berbagai macam conditional menggunakan if statement. Apa saja sih, yok kita bahas satu-persatu 🥳
a. If expression
if
expression memerlukan suatu kondisi/ condition. Jika condition di dalam if
expression bernilai true, maka block of code akan dieksekusi.
→ Contoh
fn main() {
let mahasiswa = "Adi";
if mahasiswa == "Adi" {
println!("Mahasiswa ini bernama {}", mahasiswa);
}
}
→ Output
Mahasiswa ini bernama Adi
b. If...else expression
if...else
memiliki kegunaan yang melengkapi kekosongan if
expression, jika kondisi yang berada di if
expression bernilai false, maka statement yang berada di dalam block else
akan dieksekusi.
→ Contoh
fn main() {
let mahasiswa = "Adi";
if mahasiswa == "Adi" {
println!("Mahasiswa ini bernama {}", mahasiswa);
} else {
println!("Wahh mahasiswa ini gak bernama");
}
}
→ Output
Mahasiswa ini bernama Adi
c. If...else if...else expression
Jika kita memiliki banyak atau lebih dari satu kondisi yang perlu kita cek, maka menggunakan if...else if...else
merupakan pilihan yang sangat tepat.
→ Contoh
fn main() {
let mahasiswa = "Yusuf";
if mahasiswa == "Adi" {
println!("Mahasiswa ini bernama {}", mahasiswa);
} else if mahasiswa == "Yusuf" {
println!("Mahasiswa ini bernama {}", mahasiswa);
} else {
println!("Wahh mahasiswa ini gak bernama");
}
}
→ Output
Mahasiswa ini bernama Yusuf
d. Nested if expression
Kita bisa melakukan nested/ bersarang if
expression, yang dimaksud nested adalah kita dapat menggunakan if
expression di dalam body if
expression yang lain.
Note: Kalian bisa membuat banyak level nesting, sesuai kebutuhan.
→ Contoh
fn main() {
let mahasiswa = "Adi";
let mahasiswa_2 = "Yusuf";
if mahasiswa == "Adi" {
if mahasiswa_2 == "Yusuf" {
println!("Mahasiswa ini bernama {}", mahasiswa_2);
}
println!("Mahasiswa ini bernama {}", mahasiswa);
} else {
println!("Wahh mahasiswa ini gak bernama")
}
}
→ Output
Mahasiswa ini bernama Yusuf
Mahasiswa ini bernama Adi
e. Shorthand if
Kita sebagai warga netizen atau warga +62, kita sangat malas mengetik if-else
yang sangat panjang, spesial untuk warga +62 kita bisa menggunakan shorthand if
.
→ Contoh
fn main() {
let mahasiswa = "Adi";
let hasil = if mahasiswa == "Adi" { "Your so handsome, Adi" } else { "I,m pretty handsome" };
println!("{}", hasil);
}
→ Output
Your so handsome, Adi
2. If let expression
If let merupakan conditional expression yang memungkinkan pattern matching. Block of code dalam konstruk dijalankan jika pola dalam kondisi cocok dengan scrutinee expression. Aduh bingung ya, yuk langsung ke contoh dengan beberapa kasus.
a. Pattern is matched
→ Contoh
fn main() {
// scrutinee expression
let mahasiswa = ("Adi", "sistem informasi", "yogyakarta");
if let ("Adi", "sistem informasi", "yogyakarta") = mahasiswa {
println!("{:?}", mahasiswa);
} else {
println!("Value tidak berjodoh");
}
}
→ Output
("Adi", "sistem informasi", "yogyakarta")
→ Contoh value pertama atau kedua match
fn main() {
// scrutinee expression
let mahasiswa = ("Adi", "sistem informasi", "yogyakarta");
if let ("Adi", "sistem informasi", z) = mahasiswa {
println!("Nilai tampil {}", z);
} else {
println!("Value tidak berjodoh");
}
}
→ Output
Nilai tampil yogyakarta
→ Contoh value pertama match
fn main() {
// scrutinee expression
let mahasiswa = ("Adi", "sistem informasi", "yogyakarta");
if let ("Adi", y, z) = mahasiswa {
println!("Nilai tampil {}, {}", y, z);
} else {
println!("Value tidak berjodoh");
}
}
→ Output
Nilai tampil sistem informasi, yogyakarta
b. Pattern is not matched
→ Contoh
fn main() {
// scrutinee expression
let mahasiswa = ("Adi", "sistem informasi", "yogyakarta");
if let ("Yusuf", y, z) = mahasiswa {
println!("Nilai tampil {}, {}", y, z);
} else {
println!("Value tidak berjodoh");
}
}
→ Output
Value tidak berjodoh
c. Pattern is replaced with _
Kita bisa menggunakan _
untuk kasus ketika pattern tidak terdefinisi.
→ Contoh
fn main() {
// scrutinee expression
let mahasiswa = ("Adi", "sistem informasi", "yogyakarta");
if let _ = mahasiswa {
println!("{:?}", mahasiswa);
} else {
println!("Value tidak berjodoh");
}
}
→ Output
warning: irrefutable `if let` pattern
--> src/main.rs:5:6
|
5 | if let _ = mahasiswa {
| ^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(irrefutable_let_patterns)]` on by default
("Adi", "sistem informasi", "yogyakarta")
Note: Kenapa compiler mendeteksi warning ⚠️, dikarenakan Rust compiler mengeluh, kalian itu gak masuk akal makai
if let
dengan irrefutable pattern
3. Match expression
Match expression mengecek jika value saat ini cocok dengan value yang berada di dalam list. Jika kalian sudah pernah mempelajari beberapa bahasa pemrograman seperti C++, maka match expression mirip dengan switch. Expression ini membuat code lebih compact dari pada mengunakan if/else.
→ Contoh
fn main() {
let x = 2;
match x {
1 => println!("Adi"),
2 => println!("Purwanto"),
3 => println!("Sistem"),
_ => println!("Informasi") // ini akan dieksekusi jika value tidak ada yang macth
};
}
→ Output
Purwanto
→ Contoh
fn main() {
let x = 10;
let value = match x {
1 => "Adi",
2 => "Purwanto",
3 => "Sistem",
_ => "Informasi" // ini akan dieksekusi jika value tidak ada yang macth
};
println!("{}", value);
}
→ Output
Informasi
Contoh
Contoh kali ini kita akan membuat program pengecekan apakah bilangan tersebut ganjil atau genap.
Input
integer
Output
Angka x adalah ganjil atau Angka x adalah genap
Note: Yuk kerjakan dulu, lalu beri tahu jawabannya di kolom discussion bagaimana cara solve the problem diatas.
.
.
.
.
.
→ Penyelesaian jika ada yang mentok
fn main() {
// input
let x:i32 = 6;
if x % 2 != 0 {
println!("Angka {} adalah ganjil", x);
} else {
println!("Angka {} adalah genap", x);
}
}
→ Output
Angka 6 adalah genap
Jika ada kesalahan dalam menyampaikan konsep dan penulisan mohon bantuannya di kolom discussion 🤗. Terima kasih.
#samasamabelajar
LIST COURSE:
Top comments (0)