Добавлен MpW
зачем lua нужны локальные функции ?
local zTesterLocation = Location(0,0)
local getTerrainZ = function(x,y)
MoveLocation(zTesterLocation, x, y)
return GetLocationZ(zTesterLocation)
end
смотрите локалки можно создать где угодно, и работают внутри блока, типа
do
local a = 1
--body
end
function(arguments)
local a = 0
end
if ... then
local a = 1
--body
end
while .. do
local = 0.5
--body
end
А если я создам функцию не внутри блока, а отдельно. Будут ли локалка работать там?
Пример, я локалку создаю в Init, хочу ее использовать в ABC. Но не получится. В справочнике говорится, что если она не инициирована как local, то будет глобалка. Получается что в ABC уже другая переменная.
Пример, я локалку создаю в Init, хочу ее использовать в ABC. Но не получится. В справочнике говорится, что если она не инициирована как local, то будет глобалка. Получается что в ABC уже другая переменная.
function ABC()
a = a^2
print(a)
return a
end
function Init()
local a = 5
local f = ABC()
print("было: "..a.."стало: "..f)
end
так совсем не работает. конечно не будет. Пробовал запихать внутрь функции функции. тоже не работает
function Init()
local a = 5
local f = function ABC()
a = a^2
print(a)
return a
end
print("было: "..a.."стало: "..f)
end
просто код большой. И нужно разбивать на части.
тогда надо одни глобалки юзать. Нафик локалки))
проверял вот здесь и игре
проверял вот здесь и игре
Принятый ответ
Для того же, для чего и локальные переменные - ограничить область видимости (а зачастую и время жизни) объекта текущим блоком кода
Код
function MyFunc()
local a = 10
local function InnerFunc()
print(a)
end
end
Переменная a внутри функции MyFunc объявлена локальной. следовательно, доступ к этой переменной возможен только внутри этой функции. Так как функция InnerFunc так же определена внутри функции MyFunc, она имеет доступ к локальной переменной a.
Поскольку функция InnerFunc так же как и переменная a объявлена локальной, доступ к этой функции возможен только внутри тела функции MyFunc.
При это, функция InnerFunc, конкретно в данном примере, как и переменная a, будучи локальной, существует только до тех пор, пока выполняется код объемлющей функции. То есть, она прекратит свое существование, в момент выхода из функции MyFunc
Но, что важно, если мы уберем слово local при объявлении функции InnerFunc
Поскольку функция InnerFunc так же как и переменная a объявлена локальной, доступ к этой функции возможен только внутри тела функции MyFunc.
При это, функция InnerFunc, конкретно в данном примере, как и переменная a, будучи локальной, существует только до тех пор, пока выполняется код объемлющей функции. То есть, она прекратит свое существование, в момент выхода из функции MyFunc
Но, что важно, если мы уберем слово local при объявлении функции InnerFunc
Код
function MyFunc()
local a = 10
function InnerFunc()
print(a)
end
end
то внутри тела функции MyFunc мы создаем глобальную функцию с именем InnerFunc. То есть, если до момента вызова функции MyFunc в глобальной области видимости не существовало чего-либо с именем InnerFunc, то оно будет создаваться и назначаться (переназначаться) с каждым вызовом MyFunc.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Поскольку функция InnerFunc так же как и переменная a объявлена локальной, доступ к этой функции возможен только внутри тела функции MyFunc.
При это, функция InnerFunc, конкретно в данном примере, как и переменная a, будучи локальной, существует только до тех пор, пока выполняется код объемлющей функции. То есть, она прекратит свое существование, в момент выхода из функции MyFunc
Но, что важно, если мы уберем слово local при объявлении функции InnerFunc
Ред. MpW
GetLocalPlayer, а если я создаем локалки в процессе инициализации код, они будут существовать всю игру. Или только существуют в процессе инициализации? И уже перестанут существовать? пример локалка Table?
Ред. GetLocalPlayer
понял в чем ошибка, опять не все перенес. И из-за этого обрываются действия/потоки. И мне нужно print везде чекать от начала и до.