函数如何访问更高级别定义的局部变量?

时间:2014-07-11 05:57:41

标签: 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

local foo = "Hello, world"
fn1(foo)         -- Also prints nil

从内部函数内部访问foo的正确方法是什么?将foo传递给fn1然后传递给fn2会有效,但如果涉及多个变量和函数,则会变得困难。我宁愿不让foo全球化。有没有其他方法可以使这项工作?

1 个答案:

答案 0 :(得分:2)

你可以the following将本地放在两个函数的范围内。

local foo = "Hello, world"

function fn1()
  fn2()
end

function fn2()
  print(foo)
end

fn1()