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

Функции и множественные результаты

Тест по теме «Функции и множественные результаты» проверяет чтение кода, поиск скрытых допущений и выбор решения для обычных и граничных сценариев. В нём 20 вопросов, из них 10 содержат фрагменты Lua. Условия отдельно отмечают случаи, зависящие от версии языка или внешней библиотеки.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 55 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 1 из 20
Какое правило останется верным на другом входе этого же фрагмента? Выберите основное правило раздела «Определение функции».
LuaLua · Определение функции · разбор 1
local ops = {}
function ops.double(x) return x * 2 end
local f = ops.double
print(f(6))
Вопрос 2 из 20
Какую границу стоит сделать явной в регрессионной проверке? Выберите именно проверяемую границу раздела «Определение функции».
LuaLua · Определение функции · разбор 2
local function reproduce_case()
  local ops = {}
  function ops.double(x) return x * 2 end
  local f = ops.double
  print(f(6))
end
reproduce_case()
Вопрос 3 из 20
Что нужно проверить после замены реализации? Выберите гарантию, определяющую раздел «Определение функции».
LuaLua · Определение функции · разбор 3
do
  local ops = {}
  function ops.double(x) return x * 2 end
  local f = ops.double
  print(f(6))
end
Вопрос 4 из 20
После переноса кода раздел «Определение функции» стал работать иначе. На какое правило опереться при исправлении? Выберите практическое следствие раздела «Определение функции».
Вопрос 5 из 20
Какой вариант точнее всего передаёт смысл раздела «Определение функции»? Нужна полная формулировка раздела «Определение функции».
Вопрос 6 из 20
В чём ключ к разбору строки «print(collect("a", nil, "c"))»? Выберите основное правило раздела «Переменное число аргументов».
LuaLua · Переменное число аргументов · разбор 1
local function collect(...)
  local args = table.pack(...)
  return args.n, args[2]
end
print(collect("a", nil, "c"))
Вопрос 7 из 20
Обычный запуск проходит. Какое граничное поведение обязан проверить второй тест? Выберите именно проверяемую границу раздела «Переменное число аргументов».
LuaLua · Переменное число аргументов · разбор 2
local function reproduce_case()
  local function collect(...)
    local args = table.pack(...)
    return args.n, args[2]
  end
  print(collect("a", nil, "c"))
end
reproduce_case()
Вопрос 8 из 20
Код переписывают без изменения внешнего поведения. Какой контракт должен сохраниться? Речь идёт о центральном правиле раздела «Переменное число аргументов».
LuaLua · Переменное число аргументов · разбор 3
do
  local function collect(...)
    local args = table.pack(...)
    return args.n, args[2]
  end
  print(collect("a", nil, "c"))
end
Вопрос 9 из 20
После переноса кода раздел «Переменное число аргументов» стал работать иначе. На какое правило опереться при исправлении? Ответ должен выражать проверяемое следствие раздела «Переменное число аргументов».
Вопрос 10 из 20
Какой вариант точнее всего передаёт смысл раздела «Переменное число аргументов»? Ответ должен охватывать весь раздел «Переменное число аргументов».
Вопрос 11 из 20
Какое правило останется верным на другом входе этого же фрагмента? Выберите основное правило раздела «Несколько значений».
LuaLua · Несколько значений · разбор 1
local function pair() return 4, 9 end
local a, b, c = pair(), pair()
print(a, b, c)
Вопрос 12 из 20
Обычный запуск проходит. Какое граничное поведение обязан проверить второй тест? Ищется граничное следствие правила из раздела «Несколько значений».
LuaLua · Несколько значений · разбор 2
local function reproduce_case()
  local function pair() return 4, 9 end
  local a, b, c = pair(), pair()
  print(a, b, c)
end
reproduce_case()
Вопрос 13 из 20
Какая гарантия важнее сохранения точной формы кода? Выберите гарантию, определяющую раздел «Несколько значений».
Вопрос 14 из 20
После редкого сбоя команда спорит о разделе «Несколько значений». Какой вывод должен попасть в код и тесты? Нужна эксплуатационная граница раздела «Несколько значений».
Вопрос 15 из 20
Какое утверждение о разделе «Несколько значений» полезно и при чтении кода, и при ревью? Нужна полная формулировка раздела «Несколько значений».
Вопрос 16 из 20
В чём ключ к разбору строки «if not node.next then return node.value end»? Ответ должен описывать основной механизм раздела «Хвостовой вызов».
LuaLua · Хвостовой вызов · разбор 1
local function walk(node)
  if not node.next then return node.value end
  return walk(node.next)
end
print(walk({value=1,next={value=7}}))
Вопрос 17 из 20
Какое наблюдение нужно зафиксировать при повторном вызове? Нужен отрицательный сценарий для раздела «Хвостовой вызов».
LuaLua · Хвостовой вызов · разбор 2
local function reproduce_case()
  local function walk(node)
    if not node.next then return node.value end
    return walk(node.next)
  end
  print(walk({value=1,next={value=7}}))
end
reproduce_case()
Вопрос 18 из 20
Что нужно проверить после замены реализации? Нужен основной контракт раздела «Хвостовой вызов».
Вопрос 19 из 20
В ревью обсуждают «Хвостовой вызов». Какое утверждение действительно влияет на надёжность решения? Нужна эксплуатационная граница раздела «Хвостовой вызов».
Вопрос 20 из 20
Что следует считать рабочим контрактом раздела «Хвостовой вызов»? Ответ должен охватывать весь раздел «Хвостовой вызов».

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

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

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

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