2016-12-09 11 views
1

Одна вещь, которая, кажется, отличает Lua от языков, к которым я привык, состоит в том, что важно, какой заказ вы поместили в объявления переменных и функций. В функции вы не можете получить доступ к локальным переменным, которые были объявлены после функции. Например:Есть ли способ разместить локальные функции в любом порядке в Lua?

local function foo() 
return bar 
end 
local bar = 4 
print(foo()) -- prints nil instead of 4 

То же самое верно, если вы пытаетесь получить доступ к локальной функции из функции, объявленной перед ней.

В некоторых случаях это может сработать, если вы просто осторожны с объявлением вещей в правильном порядке. Но что, если у вас есть две или более функции, которые все должны называть друг друга? Должны ли функции быть глобальными или есть ли способ сделать это с помощью локальных функций?

ответ

2

Хорошо, я разработал его. Это просто вопрос объявления вещей, прежде чем вы их определяете. Я не был уверен, что это будет работать с функциями, но я должен был знать.

local foo, bar 
function foo(a) 
print 'foo' 
if a == 3 then 
    bar(4) 
end 
end 
function bar(b) 
print 'bar' 
if b == 4 then 
    foo(2) 
end 
end 
foo(3) 
-- foo 
-- bar 
-- foo 
+0

Oh! После тестирования этого кода я узнал, что функции с идентификаторами не всегда объявляются глобально. – Hydro

+0

Что вы подразумеваете под идентификаторами? –

+0

Действительные имена идентификаторов -> 'a',' b', 'foo' и' bar' – Hydro

 Смежные вопросы

  • Нет связанных вопросов^_^