If...Else di Rust
if membuat program kamu bisa mengambil keputusan: menjalankan satu blok kode atau blok lainnya, tergantung pada sebuah kondisi.
if dasar
Section titled “if dasar”fn main() { let age = 20;
if age >= 18 { println!("Kamu boleh ikut pemilu"); }}Ada beberapa hal yang perlu diperhatikan, karena sering menjebak orang yang datang dari bahasa lain:
- Kondisinya tidak perlu diapit tanda kurung:
if age >= 18, bukanif (age >= 18). - Kondisinya harus benar-benar
bool.if age(sebuah angka) tidak akan bisa dikompilasi. Kamu perlu menulisif age != 0atau yang semacamnya.
if / else
Section titled “if / else”fn main() { let age = 15;
if age >= 18 { println!("Kamu boleh ikut pemilu"); } else { println!("Umurmu belum cukup"); }}else if untuk cabang tambahan
Section titled “else if untuk cabang tambahan”fn main() { let score = 72;
if score >= 90 { println!("Nilai: A"); } else if score >= 75 { println!("Nilai: B"); } else if score >= 60 { println!("Nilai: C"); } else { println!("Nilai: F"); }}Rust mengecek setiap kondisi dari atas ke bawah dan menjalankan kondisi pertama yang cocok, persis seperti yang kamu harapkan.
Memakai if sebagai ekspresi
Section titled “Memakai if sebagai ekspresi”Ini sesuatu yang bisa dilakukan Rust tapi tidak bisa dilakukan banyak bahasa lain: if bisa menghasilkan nilai. Artinya, kamu bisa memakainya di sisi kanan sebuah let:
fn main() { let age = 20; let status = if age >= 18 { "dewasa" } else { "di bawah umur" };
println!("{status}");}Cara kerjanya sama seperti mengembalikan nilai dari sebuah fungsi: tidak ada titik koma setelah nilai di setiap cabang. Satu syaratnya: kedua cabang harus menghasilkan tipe yang sama (di sini, keduanya &str).
Menggabungkan kondisi alih-alih bersarang
Section titled “Menggabungkan kondisi alih-alih bersarang”Kamu bisa menaruh if di dalam if lain. Itu bisa jalan, tapi kalau sudah dua atau tiga tingkat, kodenya jadi susah dibaca. Sering kali kamu bisa menggabungkan kondisinya dengan operator logika && (dan) dan || (atau):
fn main() { let temperature = 22; let is_raining = false;
// Bersarang: bisa jalan, tapi makin menjorok ke kanan if temperature > 15 { if !is_raining { println!("Bersarang: ayo jalan-jalan"); } }
// Pengecekan yang sama dalam satu kondisi if temperature > 15 && !is_raining { println!("Digabung: ayo jalan-jalan"); }
// || bernilai true kalau salah satu sisinya true if temperature < 0 || temperature > 35 { println!("Tetap di dalam rumah"); } else { println!("Cuacanya bagus"); }}Output:
Bersarang: ayo jalan-jalanDigabung: ayo jalan-jalanCuacanya bagusif bersarang tetap masuk akal kalau blok di dalamnya melakukan sesuatu yang lain, atau kalau blok itu punya else sendiri. Tapi kalau satu-satunya tugas if luar adalah menjaga if di dalamnya, && menyampaikan hal yang sama dengan lebih sederhana. Untuk mengecek apakah sebuah angka ada di dalam rentang, tulis temperature >= 15 && temperature <= 25. Rust tidak membolehkan 15 <= temperature <= 25.
Latihan
Section titled “Latihan”1. Genap atau ganjil
Section titled “1. Genap atau ganjil”Simpan sebuah angka n = 7. Pakai if sebagai ekspresi untuk mengisi variabel kind dengan "genap" atau "ganjil", lalu tampilkan 7 adalah ganjil. Petunjuk: sebuah angka genap kalau n % 2 == 0.
Lihat solusi
fn main() { let n = 7; let kind = if n % 2 == 0 { "genap" } else { "ganjil" }; println!("{n} adalah {kind}");}Output:
7 adalah ganjil2. Harga tiket
Section titled “2. Harga tiket”Sebuah bioskop memasang harga 5 dolar untuk anak di bawah 12 tahun, 7 untuk orang berumur 65 tahun ke atas, dan 12 untuk yang lainnya. Simpan age bernilai 70, hitung price dengan satu ekspresi if / else if / else, lalu tampilkan Tiket: $7. Petunjuk: setiap cabang harus menghasilkan angka, dan seluruh if diakhiri titik koma setelah } yang terakhir.
Lihat solusi
fn main() { let age = 70;
let price = if age < 12 { 5 } else if age >= 65 { 7 } else { 12 };
println!("Tiket: ${price}");}Output:
Tiket: $7Ringkasan
Section titled “Ringkasan”if kondisi { ... }: tidak perlu tanda kurung, dan kondisinya harus berupabool.- Tambahkan pengecekan lain dengan
else if, dan sediakan cabang cadangan denganelse. - Gabungkan kondisi dengan
&&dan||alih-alih menaruhifdi dalamif. ifbisa dipakai sebagai ekspresi untuk menghasilkan nilai. Tipe kedua cabangnya harus sama, dan kamu wajib menuliselse.
Kuis singkat
Section titled “Kuis singkat”Kuis singkat
1. Mana yang wajib untuk kondisi if di Rust?
2. Saat memakai if sebagai ekspresi dengan let, apa syarat untuk kedua cabangnya?
Skor: 0 / 2
Bacaan lebih lanjut
Section titled “Bacaan lebih lanjut”ifExpressions — The Rust Book (bahasa Inggris): pembahasan resmi tentangif,else if, dan memakaiifdi dalamlet.- if/else — Rust by Example (bahasa Inggris): satu contoh yang bisa dijalankan, yang menunjukkan cabang-cabang menghasilkan nilai.
- If expressions — The Rust Reference (bahasa Inggris): aturan persisnya, untuk saat kamu butuh detail yang tepat.
- Rust di Exercism (bahasa Inggris): latihan gratis dengan mentor; latihan-latihan awalnya banyak memakai
ifdanelse.