💡 Инструкция: Выберите один ответ из пяти. На 30 вопросов отведено 85 минут. В каждом задании верен только один вариант. После завершения будут показаны общий результат и 6 тематических шкал.
Вопрос 5 из 30
Предложенная правка для «Пользовательская infix-функция» звучит так: Использовать infix только для устойчивого бинарного отношения, которое естественно читается без точки и скобок. Какой недостаток важнее обсудить?
Главная цена решения — необходимость учитывать, что будет выведен `[4, 3, 2, 1]`, поскольку оператор меняет порядок аргументов.
Граница полезности решения описывается условием: Функция будет вызвана дважды из-за отсутствия точки.
Сопровождение усложнится, если окажется, что будет выведен `[1, 2, 3, 4]`, потому что infix делает диапазон включённым.
После правки останется ограничение: Код не компилируется: infix разрешён только методам классов.
Синтаксис улучшает предметную фразу, но скрывает обычный вызов и может ухудшить понимание при нетривиочном действии.
Вопрос 8 из 30
Что проверить отдельно, чтобы не принять «Минимальный type-safe builder» за универсальное правило?
Проверить крайний ввод, при котором будет выведено имя класса Html, потому что apply игнорирует toString.
Проверить, сохраняется ли контракт, когда будет выведено `<html>Kotlin</html>`, которое компилятор добавляет автоматически.
Зафиксировать сценарий, где ожидается: Код не компилируется: лямбда receiver не может вызывать p без объекта.
Типобезопасность DSL не защищает от логически неверного порядка элементов или внедрения данных, если API позволяет raw-вставку.
Отдельно воспроизвести случай, в котором возникнет ошибка, потому что parts private для лямбды.
Вопрос 10 из 30
Какое значение напечатает «Пользовательская infix-функция»?
Kotlin Инфиксные функции · Пользовательская infix-функция Копировать
// Проследите фактическое выполнение без изменения кода.
infix fun Int.untilExclusive(other: Int) = this until other
fun main() = println((1 untilExclusive 4).toList())
Будет выведен `[4, 3, 2, 1]`, поскольку оператор меняет порядок аргументов.
Будет выведен `[1, 2, 3]`: infix-вызов остаётся обычной функцией с одним параметром.
Функция будет вызвана дважды из-за отсутствия точки.
Будет выведен `[1, 2, 3, 4]`, потому что infix делает диапазон включённым.
Код не компилируется: infix разрешён только методам классов.
Вопрос 15 из 30
Какое объяснение результата «Пользовательская infix-функция» выдерживает проверку соседними случаями?
Kotlin Инфиксные функции · Пользовательская infix-функция Копировать
// На ревью требуется объяснить причину поведения.
infix fun Int.untilExclusive(other: Int) = this until other
fun main() = println((1 untilExclusive 4).toList())
Infix-функция — member или extension с одним обычным параметром без vararg/default; приоритет выражения отличается от привычных операторов.
Механика примера описывается утверждением: Код не компилируется: infix разрешён только методам классов.
Семантика фрагмента приводит к тому, что функция будет вызвана дважды из-за отсутствия точки.
Причина результата в том, что будет выведен `[4, 3, 2, 1]`, поскольку оператор меняет порядок аргументов.
Из правил языка или API следует, что будет выведен `[1, 2, 3, 4]`, потому что infix делает диапазон включённым.
Вопрос 20 из 30
Какая небольшая правка заметно повышает надёжность «Пользовательская infix-функция»?
Kotlin Инфиксные функции · Пользовательская infix-функция Копировать
// Сохраните назначение фрагмента, но укрепите его контракт.
infix fun Int.untilExclusive(other: Int) = this until other
fun main() = println((1 untilExclusive 4).toList())
Добавить локальную обработку результата, потому что будет выведен `[4, 3, 2, 1]`, поскольку оператор меняет порядок аргументов.
Сохранить API и считать достаточным условие: Функция будет вызвана дважды из-за отсутствия точки.
Использовать infix только для устойчивого бинарного отношения, которое естественно читается без точки и скобок.
Зафиксировать текущее поведение регрессионным тестом: Код не компилируется: infix разрешён только методам классов.
Передать ответственность владельцу вызова, предполагая, что будет выведен `[1, 2, 3, 4]`, потому что infix делает диапазон включённым.
Вопрос 25 из 30
Какой соседний случай отличает устойчивое решение «Пользовательская infix-функция» от удачного примера?
Проверить соседний случай: Будет выведен `[1, 2, 3, 4]`, потому что infix делает диапазон включённым.
Считать опасной границей ситуацию, где функция будет вызвана дважды из-за отсутствия точки.
Цепочка нескольких infix-вызовов ассоциируется слева и может дать иной тип/смысл, чем ожидает читатель.
Добавить регрессию на гипотезу: Будет выведен `[4, 3, 2, 1]`, поскольку оператор меняет порядок аргументов.
Отдельно проверить предположение, что код не компилируется: infix разрешён только методам классов.