SC Scala  ·  25 вопросов  ·  ~70 мин  ·  ⏱ Таймер 10:00  ·  Средний  ·  👥 1 прошёл

Type class и полиморфизм поведения

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

Отвечено: 0 из 25
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На 25 вопросов отведено 70 минут. В каждом задании верен только один вариант. Фрагменты относятся к Scala 3; внешняя библиотека названа прямо в коде или условии.
Вопрос 1 из 25
Какая характеристика конструкции «Контракт» подтверждается показанным фрагментом?
ScalaКонтракт: чтение фрагмента
trait Encode[A]: def apply(a: A): String
def encode[A](a: A)(using e: Encode[A]) = e(a)
Вопрос 2 из 25
Для темы «Контракт» что здесь требует отдельного теста или компиляционного примера?
ScalaКонтракт: изменившийся контекст
// Дополнительный контекст: Библиотечный тип расширили, и в месте вызова изменился выбор доступных операций и контекстных значений.
trait Encode[A]: def apply(a: A): String
def encode[A](a: A)(using e: Encode[A]) = e(a)
Вопрос 3 из 25
При исправлении темы «Контракт» нужно устранить причину, а не замаскировать симптом. Какое изменение подходит лучше?
ScalaКонтракт: решение на ревью
trait Encode[A]: def apply(a: A): String
def encode[A](a: A)(using e: Encode[A]) = e(a)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 4 из 25
В контракте темы «Контракт» после изменения окружения команда пересматривает контракт. Какой вариант корректен?
F[A]\xrightarrow{map(f)}F[B]
Вопрос 5 из 25
При проверке темы «Контракт» какая проверка связывает принятую правку с реальной границей решения?
Вопрос 6 из 25
В теме «Экземпляры» проследите типы и порядок вычисления. Какой вывод выдерживает такую проверку?
ScalaЭкземпляры: чтение фрагмента
trait Encode[A]: def apply(a: A): String
def encode[A](a: A)(using e: Encode[A]) = e(a)
given Encode[Int] with
  def apply(a: Int) = a.toString
println(encode(42))
Вопрос 7 из 25
Какой контрпример важен для механизма «Экземпляры»?
ScalaЭкземпляры: изменившийся контекст
// Дополнительный контекст: Обобщённую сигнатуру опубликовали в API, после чего появился ещё один допустимый экземпляр типа.
trait Encode[A]: def apply(a: A): String
def encode[A](a: A)(using e: Encode[A]) = e(a)
given Encode[Int] with
  def apply(a: Int) = a.toString
println(encode(42))
Вопрос 8 из 25
Что нужно поменять, чтобы контракт «Экземпляры» снова был точным?
ScalaЭкземпляры: решение на ревью
trait Encode[A]: def apply(a: A): String
def encode[A](a: A)(using e: Encode[A]) = e(a)
given Encode[Int] with
  def apply(a: Int) = a.toString
println(encode(42))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 9 из 25
В контракте темы «Экземпляры» какая формулировка учитывает и семантику конструкции, и реальный риск?
Вопрос 10 из 25
При проверке темы «Экземпляры» какой итог ревью содержит и действие, и способ заметить возврат риска?
Вопрос 11 из 25
В теме «Синтаксические расширения» какое утверждение не переносит в Scala правило из другого языка или другой конструкции?
ScalaСинтаксические расширения: чтение фрагмента
trait Encode[A]: def apply(a: A): String
given Encode[Int] with
  def apply(a: Int) = s"int:$a"
extension [A](a: A)
  def encoded(using e: Encode[A]) = e(a)
println(42.encoded)
Вопрос 12 из 25
Библиотечный тип расширили, и в месте вызова изменился выбор доступных операций и контекстных значений. Какое ограничение темы «Синтаксические расширения» становится существенным?
ScalaСинтаксические расширения: изменившийся контекст
// Дополнительный контекст: Обобщённую сигнатуру опубликовали в API, после чего появился ещё один допустимый экземпляр типа.
trait Encode[A]: def apply(a: A): String
given Encode[Int] with
  def apply(a: Int) = s"int:$a"
extension [A](a: A)
  def encoded(using e: Encode[A]) = e(a)
println(42.encoded)
Вопрос 13 из 25
При исправлении темы «Синтаксические расширения» какое решение уменьшает вероятность повторения обнаруженного дефекта?
ScalaСинтаксические расширения: решение на ревью
trait Encode[A]: def apply(a: A): String
given Encode[Int] with
  def apply(a: Int) = s"int:$a"
extension [A](a: A)
  def encoded(using e: Encode[A]) = e(a)
println(42.encoded)
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 14 из 25
В контракте темы «Синтаксические расширения» новый сценарий не отменяет основное правило, но делает заметной его границу. Какой ответ это отражает?
Вопрос 15 из 25
При проверке темы «Синтаксические расширения» что нужно оставить после исправления, кроме комментария в исходном файле?
Вопрос 16 из 25
В теме «Разрешение экземпляра» что здесь обеспечивается самим механизмом, а не удачным входом?
ScalaРазрешение экземпляра: чтение фрагмента
trait Name[A]: def apply(a: A): String
given Name[Any] = _.getClass.getSimpleName
given Name[String] = identity
def name[A: Name](a: A) = summon[Name[A]](a)
println(name("scala"))
Вопрос 17 из 25
Для темы «Разрешение экземпляра» обычный пример прошёл, затем изменились условия использования. Какой риск нужно проверить первым?
ScalaРазрешение экземпляра: изменившийся контекст
// Дополнительный контекст: Библиотечный тип расширили, и в месте вызова изменился выбор доступных операций и контекстных значений.
trait Name[A]: def apply(a: A): String
given Name[Any] = _.getClass.getSimpleName
given Name[String] = identity
def name[A: Name](a: A) = summon[Name[A]](a)
println(name("scala"))
Вопрос 18 из 25
При исправлении темы «Разрешение экземпляра» команда сравнивает несколько правок. Какая из них делает допущение явным и проверяемым?
ScalaРазрешение экземпляра: решение на ревью
trait Name[A]: def apply(a: A): String
given Name[Any] = _.getClass.getSimpleName
given Name[String] = identity
def name[A: Name](a: A) = summon[Name[A]](a)
println(name("scala"))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 19 из 25
В контракте темы «Разрешение экземпляра» библиотечный тип расширили, и в месте вызова изменился выбор доступных операций и контекстных значений. Какой анализ пригоден для публичного API?
Вопрос 20 из 25
Какой критерий готовности по теме «Разрешение экземпляра» действительно поймает повтор прежнего дефекта?
Вопрос 21 из 25
В теме «Диагностика результата» как сформулировать семантику примера так, чтобы она сохранилась после переименования переменных?
ScalaДиагностика результата: чтение фрагмента
trait Encode[A]: def apply(a: A): String
given Encode[Int] = _.toString
extension [A](a: A) def encoded(using e: Encode[A]) = e(a)
def renderAll[A: Encode](xs: List[A]) = xs.map(_.encoded)
println(renderAll(List(1,2,3)))
Вопрос 22 из 25
Что нужно воспроизвести, чтобы увидеть ограничение «Диагностика результата»?
Вопрос 23 из 25
При исправлении темы «Диагностика результата» какой вариант не переносит проблему в вызывающий код?
ScalaДиагностика результата: решение на ревью
trait Encode[A]: def apply(a: A): String
given Encode[Int] = _.toString
extension [A](a: A) def encoded(using e: Encode[A]) = e(a)
def renderAll[A: Encode](xs: List[A]) = xs.map(_.encoded)
println(renderAll(List(1,2,3)))
// На ревью требуется устранить причину дефекта, не скрывая её приведением типа или значением по умолчанию.
Вопрос 24 из 25
В контракте темы «Диагностика результата» какой вариант не теряет существенную часть технической картины?
Вопрос 25 из 25
При проверке темы «Диагностика результата» какую гарантию важно превратить в повторяемую проверку?

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

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

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

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