Lua 函数如何访问在更高级别上定义的局部变量?
我只是从Lua开始,我对函数访问局部变量有一个问题。天真的方法,只是尝试访问一个变量,似乎不起作用Lua 函数如何访问在更高级别上定义的局部变量?,lua,Lua,我只是从Lua开始,我对函数访问局部变量有一个问题。天真的方法,只是尝试访问一个变量,似乎不起作用 function fn1() print(foo) end local foo = "Hello, world" fn1() -- Prints nil 在本例中,我可以将foo传递给函数(如fn(foo)),但对于更复杂的情况,这会变得很棘手 function fn1() fn2() end function fn2() print(foo) end loca
function fn1()
print(foo)
end
local foo = "Hello, world"
fn1() -- Prints nil
在本例中,我可以将foo
传递给函数(如fn(foo)
),但对于更复杂的情况,这会变得很棘手
function fn1()
fn2()
end
function fn2()
print(foo)
end
local foo = "Hello, world"
fn1(foo) -- Also prints nil
从内部函数访问foo
的正确方法是什么?将foo
传递到fn1
然后传递到fn2
会起作用,但当涉及多个变量和函数时,这会变得很困难。我不想让foo
global。还有其他方法可以实现这一点吗?您可以这样做,将本地功能置于这两个功能的范围内
local foo = "Hello, world"
function fn1()
fn2()
end
function fn2()
print(foo)
end
fn1()
@hjpotter92是真的,但我只是复制了操作码并移动了局部变量,没有做任何进一步的编辑。关键是局部变量的作用域开始于声明它的语句之后和下面。除非需要,否则您可能也不希望将
fn1
和fn2
设为全局变量。