一个函数如何访问在更高层次定义的局部变量?

我刚开始使用 Lua,遇到了函数访问局部变量的问题。尝试直接访问变量似乎不起作用。

function fn1()
  print(foo)
end

local foo = "Hello, world"
fn1()         -- 输出 nil

在这种情况下,我可以将 foo 传递给函数(例如 fn(foo)),但是在更复杂的情况下会变得棘手。

function fn1()
  fn2()
end

function fn2()
  print(foo)
end

local foo = "Hello, world"
fn1(foo)         -- 也输出 nil

从内部函数中访问 foo 的正确方法是什么?将 foo 传递给 fn1,然后再传递给 fn2 可以解决问题,但是当涉及到多个变量和函数时,这就变得困难了。我不想将 foo 变成全局变量。还有其他方法可以解决这个问题吗?

点赞
用户258523
用户258523

你可以进行以下操作, 这个链接可以将 local 在两个函数之间的范围内使其可用。

local foo = "Hello, world"

function fn1()
  fn2()
end

function fn2()
  print(foo)
end

fn1()
2014-07-11 06:12:10