dofile和require不能像我预期的那样工作

时间:2018-02-28 15:42:08

标签: lua

我想加载一些lua文件,然后将其粘贴到我的代码中间。

像:

do
local abc = 123
dofile "somecode.lua"
end

somecode.lua文件是:

if abc == 123
print("hello") end

我期望这些代码和文件的进展和输出:

do
local abc = 123
if abc == 123
print("hello") end
end

output: hello

但实际输出没有显示任何内容,因为本地'声明不会影响dofile函数。

我想知道如何将代码插入到上面工作的代码中间(我所期望的)。有什么功能适合我想要的吗?

1 个答案:

答案 0 :(得分:1)

首先,您的代码存在一些语法问题。

somecode.lua必须是

if abc == 123 then
print("hello")
end

请注意==进行比较,并引入then

至于您的问题,hello没有被打印,原因是abc变量被声明为local;因此,abc语句中使用的if变量不是指本地abc,而是指默认全局abc。要解决此问题,您必须在文件中初始化全局abc,以便somecode.lua也可以获取相同的变量。

这样的事情:

$ cat file1.lua 
do
abc = 123
dofile "somecode.lua"
end
$ cat somecode.lua 
if abc == 123 then
print("hello")
end
$ lua file1.lua 
hello