💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На работу отведено 55 минут. После завершения можно посмотреть правильные ответы, объяснения и результат по каждой теме.
Вопрос 6 из 20
В чём ключ к разбору строки «print(collect("a", nil, "c"))»? Выберите основное правило раздела «Переменное число аргументов».
Lua Lua · Переменное число аргументов · разбор 1 Копировать
local function collect(...)
local args = table.pack(...)
return args.n, args[2]
end
print(collect("a", nil, "c"))
Поведение строки из раздела «Переменное число аргументов» определяется правилом: Lua передаёт и возвращает несколько значений, но в большинстве списков выражений только последнее выражение разворачивается полностью.
Поведение строки из раздела «Переменное число аргументов» определяется правилом: Функции — значения первого класса: их можно хранить в таблицах, передавать и возвращать; запись function t.f(...) является синтаксическим удобством для присваивания функции полю.
Поведение строки из раздела «Переменное число аргументов» определяется правилом: Троеточие доступно только в функции с переменным числом аргументов; table.pack сохраняет точное число аргументов в поле n, включая nil, чего обычная длина таблицы не гарантирует.
Поведение строки из раздела «Переменное число аргументов» определяется правилом: Хвостовой вызов — это прямой return функции без дальнейших вычислений; обёртка результата, арифметика или несколько выражений лишают вызов хвостовой позиции.
Поведение строки из раздела «Переменное число аргументов» определяется правилом: Lua передаёт и возвращает несколько значений, но в большинстве списков выражений только последнее выражение разворачивается полностью; скобки принудительно оставляют одно значение.
Вопрос 11 из 20
Какое правило останется верным на другом входе этого же фрагмента? Выберите основное правило раздела «Несколько значений».
Lua Lua · Несколько значений · разбор 1 Копировать
local function pair() return 4, 9 end
local a, b, c = pair(), pair()
print(a, b, c)
Результат кода в разделе «Несколько значений» объясняет утверждение: Хвостовой вызов — это прямой return функции без дальнейших вычислений; обёртка результата, арифметика или несколько выражений лишают вызов хвостовой позиции.
Результат кода в разделе «Несколько значений» объясняет утверждение: Lua передаёт и возвращает несколько значений, но в большинстве списков выражений только последнее выражение разворачивается полностью.
Результат кода в разделе «Несколько значений» объясняет утверждение: table.pack сохраняет точное число аргументов в поле n, включая nil, чего обычная длина таблицы не гарантирует.
Результат кода в разделе «Несколько значений» объясняет утверждение: Функции — значения первого класса: их можно хранить в таблицах, передавать и возвращать; запись function t.f(...) является синтаксическим удобством для присваивания функции полю.
Результат кода в разделе «Несколько значений» объясняет утверждение: Троеточие доступно только в функции с переменным числом аргументов; table.pack сохраняет точное число аргументов в поле n, включая nil, чего обычная длина таблицы не гарантирует.
Вопрос 12 из 20
Обычный запуск проходит. Какое граничное поведение обязан проверить второй тест? Ищется граничное следствие правила из раздела «Несколько значений».
Lua Lua · Несколько значений · разбор 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()
Скрытая граница раздела «Несколько значений» проявляется так: Lua передаёт и возвращает несколько значений, но в большинстве списков выражений только последнее выражение разворачивается полностью; скобки принудительно оставляют одно значение.
Скрытая граница раздела «Несколько значений» проявляется так: table.pack сохраняет точное число аргументов в поле n, включая nil, чего обычная длина таблицы не гарантирует.
Скрытая граница раздела «Несколько значений» проявляется так: Хвостовой вызов — это прямой return функции без дальнейших вычислений; обёртка результата, арифметика или несколько выражений лишают вызов хвостовой позиции.
Скрытая граница раздела «Несколько значений» проявляется так: Функции — значения первого класса: их можно хранить в таблицах, передавать и возвращать; запись function t.f(...) является синтаксическим удобством для присваивания функции полю.
Скрытая граница раздела «Несколько значений» проявляется так: Троеточие доступно только в функции с переменным числом аргументов; table.pack сохраняет точное число аргументов в поле n, включая nil, чего обычная длина таблицы не гарантирует.