#lua #scope
#lua #область видимости
Вопрос:
Должен ли я явно объявлять переменную во внешней области видимости сценария Lua 4 локальной переменной по сравнению с глобальной переменной? Должен ли я избегать одного или другого? Спасибо.
Например:
local foo = 5
по сравнению
faa = 8
Ответ №1:
Я полагаю, вы уже знаете, что local
переменные — это переменные, которые существуют только в определенной области видимости, в то время как обычные переменные являются global
и включены в _G
таблицу. Однако, согласно руководству по производительности Lua, это также помогает ускорить ваш код:
Прекомпилятор Lua способен сохранять все локальные переменные в регистрах. В результате доступ к локальным переменным в Lua осуществляется очень быстро. Например, если
a
иb
являются локальными переменными, оператор Lua, подобныйa = a b
, генерирует одну единственную инструкцию.
Итак, легко обосновать одно из самых важных правил для повышения производительности программ Lua: используйте локальные!
Комментарии:
1. Верно ли это для всех областей, включая самую внешнюю?
2. @posfan12 в случае самой внешней области основной целью использования
local
является повышение производительности скрипта, но в случае внутренних областей его функциональность может существовать только внутри области