Если внутри функции создаётся переменная, то по выходу из функции она умирает?

Страницы: 1
RSS
Если внутри функции создаётся переменная, то по выходу из функции она умирает?
 
Нужно спецом создавать глобальную переменную иначе всё что создаётся для расчёта в функции по выходу из неё будет убито?
 
"Область видимости переменных", не?
 
Цитата
Imersio Arrigo пишет:
"Область видимости переменных", не?
ну да, видимость это понятно, живучесть то как? убиваются, да?
 
я думал намек погуглить будет верно понят с первого раза  :(

https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D­0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8
 
Цитата
Imersio Arrigo пишет:
я думал намек погуглить будет верно понят с первого раза

https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D­0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8
я знаю этот термин.
для того, чтобы переменная в Lua была локальной нужно указать LOCAL, но у меня переменная задана в файле, до описания функции, сам файл и функция в нём вызывается в основном цикле программы (уже в другом файле), вот я и задался вопросом - а переменная живёт или каждый раз заново создаётся? Выходит, раз не указано LOCAL - то живёт.
 
если LOCAL нет,
то переменная будет создана в глобальной области.
 
Чего проще самому проверить


Код
function func(x)
  if x==1 then
    var1=1
    local var2=2
  end
  if x==2 then
    message(tostring(var1))
    message(tostring(var2))
  end
end

func(1)
func(2)
message(tostring(var1))
message(tostring(var2))
 
 
Не убиваются при выходе из функции только переменные, объявленные в ней как глобальные (то есть просто, без слова local), такие переменные сохраняют свои значения даже после перехода к другой функции, и она может использовать их значения. Но объявление глобальных переменных из функции является дурным тоном. Куда практичнее объявить все "глобальные" переменные в одном месте вне функций, со словом local, так они будут видны только компонентам именно этого скрипта
Страницы: 1
Читают тему
Наверх