Выбор ответа Middle Dart: типы и null-safety обновлено

Dart: records

Вопрос

Что верно про records в Dart 3?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Неизменяемые анонимные агрегаты, равенство структурное: (1, 'a') == (1, 'a'). Record это анонимное неизменяемое значение из позиционных ($1, $2) и именованных полей.

Варианты ответа

  1. Это изменяемые структуры: можно написать pair.$1 = 5, как у полей обычного класса
  2. Неизменяемые анонимные агрегаты, равенство структурное: (1, 'a') == (1, 'a')правильный ответ
  3. Records сравниваются по ссылке, как обычные объекты, поэтому два одинаковых не равны
  4. Records нельзя вернуть из функции или передать параметром, их можно объявить только локально

Разбор

Record это анонимное неизменяемое значение из позиционных ($1, $2) и именованных полей. Равенство структурное: два record с одинаковой формой и равными полями равны, hashCode тоже совпадает. Поля только читаются. Главный сценарий как раз возврат нескольких значений из функции: (int, String) parse().

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

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