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