Что выведет код Middle Dart: типы и null-safety обновлено

Dart: равенство records и списков

Вопрос

Что выведет программа? По строке на каждый вывод.

void main() {
  final r1 = (1, name: 'a');
  final r2 = (1, name: 'a');
  print(r1 == r2);
  print([1, 2] == [1, 2]);
  print(r1.name + r1.$1.toString());
}

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: true, false, a1. Records сравниваются структурно: одинаковые поля дают true.

Что выведет

true
false
a1

Разбор

Records сравниваются структурно: одинаковые поля дают true. Списки в Dart сравниваются по ссылке, два разных литерала не равны. У record позиционное поле читается как $1, именованное по имени.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.