SC Scala  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Условия, циклы и pattern matching

В тесте «Условия, циклы и pattern matching» недостаточно узнать термин: потребуется проследить типы и выполнение, найти риск соседнего случая и выбрать проверяемую правку. Шкалы: if как выражение, Ветви `match`, Условия-ограничители, Исчерпывающий разбор.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 20
В теме «if как выражение» на ревью спорят о причине наблюдаемого результата. Какое объяснение корректно?
Scalaif как выражение: чтение фрагмента
val label = if 7 % 2 == 0 then "even" else "odd"
println(label.toUpperCase)
Вопрос 2 из 20
Для темы «if как выражение» после рефакторинга код по-прежнему компилируется, однако его статический тип стал шире. Какой дефект остаётся возможным при корректном синтаксисе?
Scalaif как выражение: изменившийся контекст
// Дополнительный контекст: Публичную сигнатуру слегка изменили, но большая часть вызывающего кода осталась прежней.
val label = if 7 % 2 == 0 then "even" else "odd"
println(label.toUpperCase)
Вопрос 3 из 20
При исправлении темы «if как выражение» на ревью уже воспроизвели проблему: Отсутствующая ветвь `else` даёт `Unit` в ложном случае и часто расширяет итоговый тип до неожиданного объединения. Какую правку стоит принять?
Scalaif как выражение: решение на ревью
val label = if 7 % 2 == 0 then "even" else "odd"
println(label.toUpperCase)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 20
В контракте темы «if как выражение» какое решение не превращает частный успешный случай в общее обещание?
Вопрос 5 из 20
При проверке темы «if как выражение» какой контроль остаётся полезным после рефакторинга и переименования кода?
Вопрос 6 из 20
Какая характеристика конструкции «Ветви `match`» подтверждается показанным фрагментом?
ScalaВетви `match`: чтение фрагмента
val x: Any = 12
val out = x match
  case n: Int if n > 10 => "large"
  case _: Int => "small"
  case _ => "other"
println(out)
Вопрос 7 из 20
Для темы «Ветви `match`» что здесь требует отдельного теста или компиляционного примера?
ScalaВетви `match`: изменившийся контекст
// Дополнительный контекст: После рефакторинга код по-прежнему компилируется, однако его статический тип стал шире.
val x: Any = 12
val out = x match
  case n: Int if n > 10 => "large"
  case _: Int => "small"
  case _ => "other"
println(out)
Вопрос 8 из 20
При исправлении темы «Ветви `match`» нужно устранить причину, а не замаскировать симптом. Какое изменение подходит лучше?
ScalaВетви `match`: решение на ревью
val x: Any = 12
val out = x match
  case n: Int if n > 10 => "large"
  case _: Int => "small"
  case _ => "other"
println(out)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 20
В контракте темы «Ветви `match`» после изменения окружения команда пересматривает контракт. Какой вариант корректен?
Вопрос 10 из 20
При проверке темы «Ветви `match`» какая проверка связывает принятую правку с реальной границей решения?
Вопрос 11 из 20
В теме «Условия-ограничители» проследите типы и порядок вычисления. Какой вывод выдерживает такую проверку?
ScalaУсловия-ограничители: чтение фрагмента
def classify(n: Int) = n match
  case x if x % 6 == 0 => "six"
  case x if x % 2 == 0 => "two"
  case _ => "other"
println(classify(18))
Вопрос 12 из 20
Какой риск нельзя снять одним успешным примером «Условия-ограничители»?
Вопрос 13 из 20
Какой вариант исправления соответствует механизму «Условия-ограничители»?
ScalaУсловия-ограничители: решение на ревью
def classify(n: Int) = n match
  case x if x % 6 == 0 => "six"
  case x if x % 2 == 0 => "two"
  case _ => "other"
println(classify(18))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 20
В контракте темы «Условия-ограничители» какая формулировка учитывает и семантику конструкции, и реальный риск?
Вопрос 15 из 20
При проверке темы «Условия-ограничители» какой итог ревью содержит и действие, и способ заметить возврат риска?
Вопрос 16 из 20
В теме «Исчерпывающий разбор» какое утверждение не переносит в Scala правило из другого языка или другой конструкции?
ScalaИсчерпывающий разбор: чтение фрагмента
enum State:
  case Draft, Published, Archived
def visible(s: State) = s match
  case State.Published => true
  case State.Draft | State.Archived => false
Вопрос 17 из 20
После рефакторинга код по-прежнему компилируется, однако его статический тип стал шире. Какое ограничение темы «Исчерпывающий разбор» становится существенным?
Вопрос 18 из 20
При исправлении темы «Исчерпывающий разбор» какое решение уменьшает вероятность повторения обнаруженного дефекта?
ScalaИсчерпывающий разбор: решение на ревью
enum State:
  case Draft, Published, Archived
def visible(s: State) = s match
  case State.Published => true
  case State.Draft | State.Archived => false
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 20
В контракте темы «Исчерпывающий разбор» новый сценарий не отменяет основное правило, но делает заметной его границу. Какой ответ это отражает?
Вопрос 20 из 20
При проверке темы «Исчерпывающий разбор» что нужно оставить после исправления, кроме комментария в исходном файле?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу