Skip to content

Records

Что такое record

Record — это “пачка” значений без создания класса. Может быть позиционным и/или именованным.

Позиционный record

dart
(int, String) user() => (1, 'Ada');

void main() {
  final u = user();
  final id = u.$1;
  final name = u.$2;
  print('$id $name');
}

Именованный record

dart
({int id, String name}) user() => (id: 1, name: 'Ada');

void main() {
  final u = user();
  print(u.id);
  print(u.name);
}

Деструктуризация

dart
({int id, String name}) user() => (id: 1, name: 'Ada');

void main() {
  final (:id, :name) = user();
  print('$id $name');
}

Сравнение records

Records сравниваются по значениям.

dart
void main() {
  final a = (1, 'x');
  final b = (1, 'x');
  print(a == b);
}

Когда удобно

  • вернуть из функции сразу несколько значений
  • промежуточные результаты в пайплайнах
  • локальные “DTO” без отдельного класса