LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

Область видимости счётчика ограничена телом цикла.

i = "global" -- глобальная ай
----------------------------
do --создаём локальную область видимости
  local i = "local" -- создадим в локальной области локальную переменную
end
print(i) -- вывод будет 'global'
-----------------------------
do 
    local i = i;
    print(i) -- в локальную переменну. локальной области видимости 
             -- копируем значение глобальной пеменной.
    i = "6451654861561"
end
print(i) -- вывод будет 'global'
------------------------------
i=nil -- уничтожаем глобальную переменную, как будто бы её и небыло

-- тож самое происходит тут
for i=1,10 do
    
end
print(i) -- цикл прошёл, i более не существует
------------------------------


-- А мы её сделаем и даже глобальную!
i = 1;
x = 42
for i=1,10 do -- но что толку ведь в for своя область видимости
    print(i)
    x=i;
end

print(i); -- как был 1 так и остался
print(x); -- а вот тут мы сохранили то что хотели.

-- По мимо переменных есть их области видимости, переменные инициалзации
-- циклов заперты в цикле, создаются при его начале и уничтожаются после
-- даже если имеют одно и тоже имя с иной локальной или глобальной пеменной

-- циклу пофиг он будет крутится
for i=1,10 do 
    print(i)
    local i = "hello";--просто после такого
    print(i)
    i = "lololo";--или такого ты потеряешь значение счётчика в текущей итерации
    print(i)
    -- Но лучше так не делать, ибо UB!!!!!!!!!!!!!! )))))))))))
end

Исходная версия LINUX-ORG-RU, :

Область видимости счётчика ограничена телом цикла.

i = "global" -- глобальная ай
----------------------------
do --создаём локальную область видимости
  local i = "local" -- создадим в локальной области локальную переменную
end
print(i) -- вывод будет 'global'
-----------------------------
do 
    local i = i;
    print(i) -- в локальную переменну. локальной области видимости 
             -- копируем значение глобальной пеменной.
    i = "6451654861561"
end
print(i) -- вывод будет 'global'
------------------------------
i=nil -- уничтожаем глобальную переменную, как будто бы её и небыло

-- тож самое происходит тут
for i=1,10 do
    
end
print(i) -- цикл прошёл, i более не существует
------------------------------


-- А мы её сделаем и даже глобальную!
i = 1;
x = 42
for i=1,10 do -- но что толку ведь в for своя область видимости
    print(i)
    x=i;
end

print(i); -- как был 1 так и остался
print(x); -- а вот тут мы сохранили то что хотели.

-- По мимо переменных есть их области видимости, переменные инициалзации
-- циклов заперты в цикле, создаются при его начале и уничтожаются после
-- даже если имеют одно и тоже имя с иной локальной или глобальной пеменной

-- циклу пофиг он будет крутится
for i=1,10 do 
    print(i)
    local i = "hello";--просто после такого
    print(i)
    i = "lololo";--или такого ты потеряешь значение счётчика в текущей итерации
    print(i)
end