Предисловие: Насколько я вижу, документы на сайте на самом деле не говорят об этом, и я не нашел никого другого, даже задающего вопрос, так что я уверен эти две формы идентичны, но я хочу знать, знает ли кто-нибудь наверняка .
Учитывая этот код Lua:
function f()
function a() ... end
local function b() ... end
...
end
Есть ли функциональная разница между a()
и b()
? Я говорю с точки зрения производительности, доступа, предостережений, всего на свете. Как, в конце концов, они оба имеют одинаковое базовое представление во время выполнения?
Я подозреваю, что нет никакой разницы, но я не уверен , и это меня беспокоит. Я знаю, что a()
имеет область действия для включающей функции f()
, но я не уверен, действительно ли это делает ее локальной переменной с точки зрения функционирования вещей под капотом. С b()
я могу быть уверен.
Мы знаем из официальных документов, что мое определение b()
выше является синтаксическим сахаром для этого:
local b
b = function() ... end
Я испытываю желание поверить, что даже без ключевого слова local
в моем определении, окончательное обезвоженное определение a()
также будет следовать именно этому формату, включая local a
часть.
Я просто чувствую, что не могу предположить это.