Я знаю, что это очень простой вопрос, но я очень сильно смущают local
переменных & их объем в Lua, например, если я пишу local x=12
, это означает, что переменная x
является локальной переменной & это значение 12
, но вместо этого, если я напишу local x
& в следующей строке x=12
, означает ли это то же, что и в предыдущем случае, или x=12
рассматривается как глобальная переменная?Как локальные переменные действуют в lua?
ответ
Вы можете думать о нем, как два совершенно независимых вещей:
local x
создает «слот» в локальной области, чтобы удерживать значение , т.е. переменная. Эта переменная называетсяx
. С этой точки вперед, пока вы не выйдете из этой области, любая ссылка наx
будет ссылаться на это локальное значениеx
.x = 12
ставит значение в переменнуюx
. Если вы ранее создали локальный слот с именем x, он туда и пойдет. Если в области нет локальногоx
, он войдет в глобальную область.
local x = 12
просто сокращение для объединения этих двух вещей, создавая локальную переменную и присвоить ей значение в то же время.
Итак, ваши два сценария фактически эквивалентны.
local x
x = 12
И
local x = 12
Сделайте то же самое.
Thanx много для кристально чистых объяснений !! –
Вы используете только ключевое слово local
один раз для каждой области, так что второй доступ x
в вашем примере будет использовать локальный x
. Если после этого вы хотите получить доступ к глобальной x
, вы можете использовать __G.x
, так что u означает сказать, что во втором случае 'x = 12' подразумевает, что' local x = 12' right ?? –
@caesargetit Это правильно. –
@caesargetit Это неверно. 'local x = 12' означает новую локальную переменную' x'. 'x = 12' означает присвоение 12 ближайшей предыдущей локальной' x' или, если она не принадлежит, глобальной переменной 'x'. –
Mind-bender: 'local x = 12 local x = x + 11' Две переменные: вторая имеет значение 23; Первый по-прежнему имеет значение 12, но затем становится недоступным из-за того, что он затенен вторым. –