Lua中为何闭包内无法访问文件局部变量?

2026-06-05 09:014阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计347个文字,预计阅读时间需要2分钟。

Lua中为何闭包内无法访问文件局部变量?

假设你有以下两个Lua文件:

a.lua:lualocal x=5local f=dofile('b.lua')()

b.lua:lualocal fun=function() print(x)endreturn fun

如果在shell中运行 `luajit a.lua`,你可能会看到输出 `nil`。这是因为 `dofile` 在 `a.lua` 中加载 `b.lua` 时,`x` 的值在 `b.lua` 的函数内部是无法访问的。

原因在于 `dofile` 函数加载的文件会创建一个新的作用域,因此 `a.lua` 中的局部变量 `x` 并不会被带到 `b.lua` 的作用域中。`b.lua` 中的函数 `fun` 无法访问 `a.lua` 的作用域中的 `x`。

阅读全文

本文共计347个文字,预计阅读时间需要2分钟。

Lua中为何闭包内无法访问文件局部变量?

假设你有以下两个Lua文件:

a.lua:lualocal x=5local f=dofile('b.lua')()

b.lua:lualocal fun=function() print(x)endreturn fun

如果在shell中运行 `luajit a.lua`,你可能会看到输出 `nil`。这是因为 `dofile` 在 `a.lua` 中加载 `b.lua` 时,`x` 的值在 `b.lua` 的函数内部是无法访问的。

原因在于 `dofile` 函数加载的文件会创建一个新的作用域,因此 `a.lua` 中的局部变量 `x` 并不会被带到 `b.lua` 的作用域中。`b.lua` 中的函数 `fun` 无法访问 `a.lua` 的作用域中的 `x`。

阅读全文