【问题标题】:How can a function access local variables defined on a higher level?函数如何访问更高级别上定义的局部变量?
【发布时间】:2014-07-11 05:57:40
【问题描述】:

我刚开始使用 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 成为全球性的。有没有其他方法可以完成这项工作?

【问题讨论】:

  • 除非您需要,否则您可能也不希望将 fn1fn2 设为全局。

标签: lua


【解决方案1】:

您可以使用the following 将本地置于这两个功能的范围内。

local foo = "Hello, world"

function fn1()
  fn2()
end

function fn2()
  print(foo)
end

fn1()

【讨论】:

  • @hjpotter92 是的,但我只是复制了 OP 代码并移动了本地,没有做任何进一步的编辑。
  • 重点是局部变量的作用域在声明它的语句之后和之下开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
  • 2011-04-15
相关资源
最近更新 更多