Pattern matching
BARU Dart 3: literal, variable, list, map, record, logical, relational.
Pahami konsepnya
Pattern matching adalah fitur terbesar Dart 3 — mengganti if/else berantai dengan pola deklaratif. Pola literal: case 200:; pola variable: case int n:; pola record: case (int a, int b):; pola list: case [first, ...rest]:. Logical OR: case 200 || 201 || 202:. Guard: case int n when n > 100:.
Destructuring dalam pola: switch (poin) { [int pertama, int kedua] => ... } memecah list langsung ke variabel. Record pola: case (nama: String n, umur: int u) memberi n dan u dari named record.
Coba contoh kode
String jelaskan(Object obj) => switch (obj) {
0 => "nol",
int n when n > 100 => "angka besar: $n",
int n => "angka: $n",
String s => "teks: $s",
[int a, int b] => "pasangan: $a+$b=${a + b}",
{"nama": String n} => "objek bernama $n",
_ => "tidak dikenal",
};
void main() {
print(jelaskan(0));
print(jelaskan(42));
print(jelaskan("halo"));
print(jelaskan([3, 5]));
print(jelaskan({"nama": "Ari"}));
}Switch expression dengan pola: int n when n > 100 adalah guard; [int a, int b] mendestruksi list; {"nama": String n} mencocokkan map dengan kunci nama. _ menampung sisanya.
Latihan singkat
Uji: jelaskan([10, 20]) dengan pola list → "pasangan: 10+20=30".