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

Функции и каррирование

Раздел «Функции и каррирование» соединяет небольшие фрагменты Scala с ревью и рабочими сценариями. Проверяются: Сигнатуры, Функции высшего порядка, Каррирование, Частичное применение.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 20 вопросов отведено 55 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 20
В теме «Сигнатуры» какой вывод о типах или выполнении прямо следует из кода?
ScalaСигнатуры: чтение фрагмента
def discount(price: BigDecimal, percent: Int): BigDecimal =
  price * (100 - percent) / 100
println(discount(BigDecimal(80), 25))
Вопрос 2 из 20
Для темы «Сигнатуры» обычный пример прошёл, затем изменились условия использования. Какой риск нужно проверить первым?
ScalaСигнатуры: изменившийся контекст
// Дополнительный контекст: Фрагмент вынесли из локальной функции в общий модуль и добавили новый вариант входных данных.
def discount(price: BigDecimal, percent: Int): BigDecimal =
  price * (100 - percent) / 100
println(discount(BigDecimal(80), 25))
Вопрос 3 из 20
При исправлении темы «Сигнатуры» команда сравнивает несколько правок. Какая из них делает допущение явным и проверяемым?
ScalaСигнатуры: решение на ревью
def discount(price: BigDecimal, percent: Int): BigDecimal =
  price * (100 - percent) / 100
println(discount(BigDecimal(80), 25))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 20
В контракте темы «Сигнатуры» после рефакторинга код по-прежнему компилируется, однако его статический тип стал шире. Какой анализ пригоден для публичного API?
Вопрос 5 из 20
Какой критерий готовности по теме «Сигнатуры» действительно поймает повтор прежнего дефекта?
Вопрос 6 из 20
В теме «Функции высшего порядка» как сформулировать семантику примера так, чтобы она сохранилась после переименования переменных?
ScalaФункции высшего порядка: чтение фрагмента
def twice(f: Int => Int)(x: Int) = f(f(x))
val inc = (n: Int) => n + 1
println(twice(inc)(10))
Вопрос 7 из 20
В какой ситуации прежний вывод о «Функции высшего порядка» окажется слишком широким?
ScalaФункции высшего порядка: изменившийся контекст
// Дополнительный контекст: После рефакторинга код по-прежнему компилируется, однако его статический тип стал шире.
def twice(f: Int => Int)(x: Int) = f(f(x))
val inc = (n: Int) => n + 1
println(twice(inc)(10))
Вопрос 8 из 20
При исправлении темы «Функции высшего порядка» какой вариант не переносит проблему в вызывающий код?
ScalaФункции высшего порядка: решение на ревью
def twice(f: Int => Int)(x: Int) = f(f(x))
val inc = (n: Int) => n + 1
println(twice(inc)(10))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 20
В контракте темы «Функции высшего порядка» какой вариант не теряет существенную часть технической картины?
Вопрос 10 из 20
При проверке темы «Функции высшего порядка» что лучше не оставлять только в устной договорённости?
Вопрос 11 из 20
Во фрагменте проверяется тема «Каррирование». Какое правило точнее всего объясняет поведение кода?
ScalaКаррирование: чтение фрагмента
def combine(prefix: String)(value: Int): String = s"$prefix$value"
val item = combine("id-")
println(item(7))
Вопрос 12 из 20
Для темы «Каррирование» какой случай уже не покрывается показанной гарантией?
Вопрос 13 из 20
При исправлении темы «Каррирование» что следует изменить, чтобы следующий рефакторинг не вернул тот же риск?
ScalaКаррирование: решение на ревью
def combine(prefix: String)(value: Int): String = s"$prefix$value"
val item = combine("id-")
println(item(7))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 20
В контракте темы «Каррирование» что следует оставить в проектном решении после этого изменения контекста?
Вопрос 15 из 20
При проверке темы «Каррирование» какой итог можно проверить автоматически или воспроизводимым примером?
Вопрос 16 из 20
В теме «Частичное применение» что в этом примере определяется семантикой Scala, а не соглашением автора?
ScalaЧастичное применение: чтение фрагмента
def add(a: Int, b: Int) = a + b
val addTen = add(10, _: Int)
println(List(1,2,3).map(addTen))
Вопрос 17 из 20
Для темы «Частичное применение» после переноса кода в общий модуль проявилось скрытое допущение. Какое?
Вопрос 18 из 20
Какое действие устраняет причину проблемы в теме «Частичное применение»?
ScalaЧастичное применение: решение на ревью
def add(a: Int, b: Int) = a + b
val addTen = add(10, _: Int)
println(List(1,2,3).map(addTen))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 20
В контракте темы «Частичное применение» после рефакторинга код по-прежнему компилируется, однако его статический тип стал шире. Какой вывод одновременно сохраняет правило и учитывает его границу?
Вопрос 20 из 20
При проверке темы «Частичное применение» как сформулировать защиту от регрессии без расплывчатого «работает как раньше»?

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

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

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

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