Skip to main content

record

Dart heeft een (nieuwe) feature genaamd “records”, die werd geïntroduceerd in versie 3.0. Records bieden een manier om meerdere gerelateerde waarden als een enkele eenheid te groeperen zonder een speciale klasse te definiëren.

Wat is een Record in Dart?

Een record in Dart is een samengestelde datatype waarmee je meerdere waarden kunt groeperen. Records zijn niet-veranderlijk en kunnen zowel gepositioneerde als geneste velden bevatten.

Definiëren van een Record

Je kunt een record definiëren door waarden tussen haakjes te plaatsen.

void main() {
  // Een record met twee gepositioneerde velden
  var persoon = ('Alice', 30);
  
  // Een record met benoemde velden
  var locatie = (latitude: 52.3791, longitude: 4.8994);
  
  print(persoon);   // Output: (Alice, 30)
  print(locatie);   // Output: (latitude: 52.3791, longitude: 4.8994)
}  

Toegang krijgen tot Record-velden

Je kunt toegang krijgen tot de velden van een record met behulp van zowel de gepositioneerde als de benoemde veldnamen.

void main() {
  var persoon = ('Alice', 30);
  var locatie = (latitude: 52.3791, longitude: 4.8994);

  // Toegang krijgen tot gepositioneerde velden
  print(persoon.$1);  // Output: Alice
  print(persoon.$2);  // Output: 30

  // Toegang krijgen tot benoemde velden
  print(locatie.latitude);  // Output: 52.3791
  print(locatie.longitude); // Output: 4.8994
}

Records met verschillende typen velden

Records kunnen velden van verschillende typen bevatten.

void main() {
  var gemengdRecord = ('Bob', 25, true, 180.5);

  print(gemengdRecord.$1); // Output: Bob
  print(gemengdRecord.$2); // Output: 25
  print(gemengdRecord.$3); // Output: true
  print(gemengdRecord.$4); // Output: 180.5
}

Records als functie-parameters en -retourwaarden

Records kunnen worden gebruikt als parameters en retourwaarden van functies.

// Functie die een record retourneert
(String, int) getPersoon() {
  return ('Charlie', 40);
}

// Functie die een record als parameter accepteert
void printPersoon((String, int) persoon) {
  print('Naam: ${persoon.$1}, Leeftijd: ${persoon.$2}');
}

void main() {
  var persoon = getPersoon();
  printPersoon(persoon); // Output: Naam: Charlie, Leeftijd: 40
}

Samenvatting

Records in Dart bieden een handige manier om meerdere gerelateerde waarden samen te groeperen zonder een aparte klasse te definiëren. Je kunt records definiëren met gepositioneerde en benoemde velden, toegang krijgen tot de velden, en ze gebruiken als parameters en retourwaarden in functies.