加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua – 在整个文件的闭包中看不到局部变量?

发布时间:2020-12-14 21:45:49 所属栏目:大数据 来源:网络整理
导读:假设我有以下两个Lua文件: 在a.lua: local x = 5f = dofile'b.lua'f() 在b.lua: local fun = function() print(x)endreturn fun 然后,如果我在shell中运行luajit a.lua,则打印nil,因为在b.lua中定义的函数中无法看到x.预期的打印应为5.但是,如果我将所有
假设我有以下两个Lua文件:

在a.lua:

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

在b.lua:

local fun = function()
  print(x)
end
return fun

然后,如果我在shell中运行luajit a.lua,则打印nil,因为在b.lua中定义的函数中无法看到x.预期的打印应为5.但是,如果我将所有内容放在一个文件中,那么它正是我想要的:

在aa.lua:

local x = 5
local f = function()
  print(x)
end
f()

运行luajit aa.lua它打印5.

那么为什么x在第一种情况下无法看到呢?

解决方法

顾名思义,局部变量是块的本地变量.

dofile()从另一个文件加载块.因为它是另一个块,所以第一个块中的局部变量x没有被它看到是有道理的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读