Иван Джеммер (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Локальные переменные
 
Цитата
Алексей написал:
При выходе из функции переменные var1-5 будут уничтожены.
А если такой код:
Код
local var_func

function func()
   local var = 'abc' -- Создаем локальную переменную
   
   function func_2()
      print(var)
   end
   
   var_func = func_2 -- сохраняем во внешнюю переменную созданную функцию
   
   -- Выход из функции, локальная переменная 'var' уничтожается.
end

func()

var_func() -- по сути запускаем ранее созданную функцию func_2

-- ВЫВОД: 'abc'
Если локальные переменные уничтожаются при выходе из функции, почему тогда мы сможем прочесть локальную переменную 'var'?
Локальные переменные
 
В функцию в качестве аргумента приходит таблица data = { 'a', 'b', 'c', 'd', 'e' }
Для удобства я делаю следующее:

local var1 = data[1]
local var2 = data[2]
local var3 = data[3]
local var4 = data[4]
local var5 = data[5]

Вопрос состоит в следующем: при выходе из этой функции, что случится с переменными var1-5 и таблицей data? Будут ли они храниться в окружении данной функции или уничтожатся? Если data будут храниться, то не будет ли расточительством делать переменные var1-5? (т.к. это по сути копии таблицы data). Просто мне удобно использовать var1-5 (т.к. легче обращаться к значениям по имени переменной, а не по индексу в в таблице data), но в то же время опасаюсь, что это будет лишним засорением памяти.


// Появилась ещё идея, после ввода переменных var1-5 выполнить код: data = nil. Что скажете?
Страницы: 1
Наверх