💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 55 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 2 из 20
Что следует изменить во входе, чтобы проверить скрытое ограничение? Ищется граничное следствие правила из раздела «Массивная часть».
Lua Lua · Массивная часть · разбор 2 Копировать
local function reproduce_case()
local a = {10, 20, nil, 40}
print(#a, a[4])
end
reproduce_case()
Второй запуск раздела «Массивная часть» нужен, чтобы увидеть: Ключом таблицы может быть любое значение кроме nil и NaN; числа 1 и 1.0 обозначают один ключ там, где они равны, а изменяемое содержимое таблицы не влияет на её идентичность как ключа.
Второй запуск раздела «Массивная часть» нужен, чтобы увидеть: Добавление и удаление ключей во время pairs может привести к пропускам или неожиданному обходу; безопаснее сначала собрать изменения либо обходить устойчивый список ключей.
Второй запуск раздела «Массивная часть» нужен, чтобы увидеть: Последовательная часть таблицы обычно использует целые ключи от 1; оператор # определён надёжно только для последовательности без дыр, поэтому nil посередине делает длину неоднозначной.
Второй запуск раздела «Массивная часть» нужен, чтобы увидеть: Числа 1 и 1.0 обозначают один ключ там, где они равны, а изменяемое содержимое таблицы не влияет на её идентичность как ключа.
Второй запуск раздела «Массивная часть» нужен, чтобы увидеть: pairs не обещает порядок обхода, ipairs идёт по целым индексам от 1 до первого отсутствующего значения; требуемый порядок нужно задавать отдельно.
Вопрос 12 из 20
Что должен поймать отрицательный тест для этого фрагмента? Нужен отрицательный сценарий для раздела «Обход».
Lua Lua · Обход · разбор 2 Копировать
local function reproduce_case()
local t = {b=2, a=1, c=3}
for k, v in pairs(t) do print(k, v) end
end
reproduce_case()
Отрицательный сценарий для раздела «Обход» фиксирует: Добавление и удаление ключей во время pairs может привести к пропускам или неожиданному обходу; безопаснее сначала собрать изменения либо обходить устойчивый список ключей.
Отрицательный сценарий для раздела «Обход» фиксирует: Последовательная часть таблицы обычно использует целые ключи от 1; оператор # определён надёжно только для последовательности без дыр, поэтому nil посередине делает длину неоднозначной.
Отрицательный сценарий для раздела «Обход» фиксирует: Числа 1 и 1.0 обозначают один ключ там, где они равны, а изменяемое содержимое таблицы не влияет на её идентичность как ключа.
Отрицательный сценарий для раздела «Обход» фиксирует: Ключом таблицы может быть любое значение кроме nil и NaN; числа 1 и 1.0 обозначают один ключ там, где они равны, а изменяемое содержимое таблицы не влияет на её идентичность как ключа.
Отрицательный сценарий для раздела «Обход» фиксирует: pairs не обещает порядок обхода, ipairs идёт по целым индексам от 1 до первого отсутствующего значения; требуемый порядок нужно задавать отдельно.