JRG 4 · Dasar JRG
Percabangan: if & match
Membuat program memilih jalan. Dua cara: satu untuk syarat bebas, satu untuk mencocokkan nilai.
logikaif — kalau begini, lakukan itu
pub fn main() {
let nilai = 82
if nilai >= 75 {
wok("Lulus")
} else {
wok("Belum lulus")
}
}LulusBeberapa cabang
fn grade(n: int) -> string {
if n >= 90 { return "A" }
else if n >= 80 { return "B" }
else if n >= 70 { return "C" }
else { return "D" }
}
pub fn main() {
wok(95, "->", grade(95))
wok(83, "->", grade(83))
wok(60, "->", grade(60))
}95 -> A
83 -> B
60 -> Dif juga menghasilkan nilai
Di JRG, if bukan cuma pernyataan — ia bisa dipakai langsung sebagai nilai.
pub fn main() {
let umur = 20
let status = if umur >= 17 { "dewasa" } else { "anak" }
wok(status)
}dewasapub fn main() {
let n = 7
wok(n % 2 == 0 $ "genap" : "ganjil")
}ganjilmatch — mencocokkan nilai
Kalau kamu membandingkan satu nilai dengan banyak kemungkinan, match jauh lebih rapi daripada tumpukan else if.
fn namaHari(n: int) -> string {
return match n {
1 => "Senin",
2 => "Selasa",
3 => "Rabu",
6 | 7 => "Akhir pekan",
_ => "Hari lain"
}
}
pub fn main() {
wok(namaHari(1))
wok(namaHari(6))
wok(namaHari(4))
}Senin
Akhir pekan
Hari lain| Pola | Cocok dengan |
|---|---|
3 | Nilai tepat 3 |
6 | 7 | 6 atau 7 |
1..=5 | Rentang 1 sampai 5 |
n if n > 100 | Nilai apa pun, asal lebih dari 100 |
_ | Apa pun — taruh paling bawah |
fn kategori(n: int) -> string {
return match n {
0 => "kosong",
1..=9 => "satuan",
10..=99 => "puluhan",
x if x < 0 => "negatif",
_ => "besar"
}
}
pub fn main() {
wok(kategori(0), kategori(5), kategori(42))
wok(kategori(-3), kategori(1000))
}kosong satuan puluhan
negatif besarKuis 1
Apa hasil if 5 > 3 { "ya" } else { "tidak" }?
Tepat — di JRG if menghasilkan nilai dari cabang yang terpilih.
if di JRG bisa dipakai sebagai nilai, dan yang keluar adalah isi cabangnya.
Kuis 2
Kenapa _ ditaruh paling bawah di match?
Betul. Pola diperiksa dari atas, jadi _ di atas akan menelan semuanya.
Pikirkan urutan pemeriksaannya — dari atas ke bawah.
Kuis 3
Pembuka bentuk ringkas percabangan di JRG adalah?
Tepat: syarat $ a : b. Tanda ? dipakai untuk penerusan galat.
Bukan ? — di JRG tanda itu punya tugas lain.
Latihan mandiri
1. Tulis fungsi yang menerima angka dan mengembalikan "positif", "negatif", atau "nol".
2. Tulis ulang fungsi itu memakai match.
if/else if/else, periksa > 0 lalu < 0.match n { 0 => "nol", x if x > 0 => "positif", _ => "negatif" }.