Так скажем, у меня есть файл Lua, и в верхней части, я определяю переменную вне функции, но я называю это местныйЛокальные переменные в глобальной области видимости Lua
local x = 1
Есть ли разница между тем, локальный x и глобальный x?
Так скажем, у меня есть файл Lua, и в верхней части, я определяю переменную вне функции, но я называю это местныйЛокальные переменные в глобальной области видимости Lua
local x = 1
Есть ли разница между тем, локальный x и глобальный x?
Да, как это местное к chunk, что он создан в.
Lua обрабатывает кусок, как тело анонимной функции с переменным числом аргументов (см §3.4.11). Таким образом, куски могут определять локальные переменные, принимать аргументы и возвращать значения. Более того, такая анонимная функция компилируется, как в области внешней локальной переменной с именем _ENV (см. П. 2.2). Результирующая функция всегда имеет _ENV как единственное значение upvalue, даже если она не использует эту переменную.
Рассмотрим следующий пример:
-- main.lua
require 'other'
print(x, y)
-- other.lua
local x = 5
y = 10
Это будет распечатать nil, 10
, так как x
был локальным для кусок, в то время как y
был назначен в качестве повышать стоимость для зависимости от того, Окружающая средакусок был загружен в
См. Также:
И заметьте, что семантика сред изменяется между lua5.1 и Lua5.2:
Вы не можете определить переменную вне функции, так как скрипт скомпилирован как [тело функции] (https://www.lua.org/manual/5.3/manual.html#3.3 0,2). –