Тип Record
Тип Record в Dart представляет собой
неизменяемую коллекцию из нескольких полей,
которые могут иметь разные типы. В отличие
от списков и карт, поля кортежа имеют
фиксированное количество и доступны
по позиции или по имени. Кортежи удобны
для возврата нескольких значений
из функции без создания отдельного класса.
Синтаксис
// Позиционный кортеж
(int, String) record = (1, 'abcde');
// Именованный кортеж
({int x, String y}) record = (x: 1, y: 'abcde');
// Смешанный кортеж
(int, {String y}) record = (1, y: 'abcde');
Пример
Давайте создадим позиционный кортеж из трёх полей разных типов и выведем его на экран:
void main()
{
var res = (1, 'abcde', true);
print(res);
}
Результат выполнения кода:
(1, abcde, true)
Пример
Давайте получим доступ к полям кортежа
по их позиции с помощью свойства $1,
$2 и так далее:
void main()
{
var res = (1, 'abcde', true);
print(res.$1);
print(res.$2);
print(res.$3);
}
Результат выполнения кода:
1
"abcde"
true
Пример
Давайте создадим именованный кортеж и получим доступ к его полям по именам:
void main()
{
var res = (x: 1, y: 'abcde');
print(res.x);
print(res.y);
}
Результат выполнения кода:
1
"abcde"
Пример
Давайте используем кортеж для возврата нескольких значений из функции:
(int, String) getValues()
{
return (1, 'abcde');
}
void main()
{
var res = getValues();
print(res.$1);
print(res.$2);
}
Результат выполнения кода:
1
"abcde"
Пример
Давайте распакуем кортеж на отдельные переменные с помощью деструктуризации:
void main()
{
var (a, b, c) = (1, 'abcde', true);
print(a);
print(b);
print(c);
}
Результат выполнения кода:
1
"abcde"
true