← Kembali ke kursus
Pelajaran kursus · Dart
Pelajaran 08

Record

BARU Dart 3: kumpulan nilai anonim, positional & named fields.

Pahami konsepnya

Record adalah fitur BARU Dart 3: kumpulan nilai tanpa perlu membuat class. Record positional: var titik = (3, 7); — akses titik.$1 dan titik.$2. Record named: var user = (nama: "Ari", umur: 17); — akses user.nama dan user.umur.

Record berguna untuk: fungsi yang mengembalikan beberapa nilai (return (min, max);), destructuring (var (x, y) = titik;), dan pola pattern matching. Record bersifat value-based: dua record dengan isi sama dianggap ==.

Destructuring memecah record langsung ke variabel: var (a, b) = (10, 20); memberi a=10 dan b=20. Ini menggantikan tuple yang tidak ada di Dart sebelum Dart 3.

Coba contoh kode

void main() {
  // positional
  var titik = (3, 7);
  print(titik.$1 + titik.$2);  // 10

  // named
  var user = (nama: "Ari", umur: 17);
  print("${user.nama} (${user.umur})");

  // destructuring
  var (x, y) = (10, 20);
  print("x=$x y=$y");

  // multi-return
  var (min, maks) = rentang([3, 8, 1, 9, 4]);
  print("$min..$maks");
}

(int, int) rentang(List<int> d) {
  return (d.reduce((a, b) => a < b ? a : b),
          d.reduce((a, b) => a > b ? a : b));
}

Record positional diakses via $1, $2; named via nama properti. Destructuring var (x, y) = ... memecah langsung. Fungsi rentang mengembalikan (int, int) sebagai record — tanpa perlu class.

Latihan singkat

Uji: record (10, 20) → destructure a, b → a+b harus `30`.