← Kembali ke kursus
Pelajaran kursus · Dart
Pelajaran 10

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".