test.lua脚本定义main函数如下:
function main(szName, num1, num2)
print("main()", szName, num1, num2);
local nRandMax = 10000;
local nRand = math.random(nRandMax);
print("nRand =", nRand)
return 1;
end
现在我想在test.lua脚本中调用另外一个test1.lua脚本文件中的GetRandMax(),通常的做法是这样的:
function main(szName, num1, num2)
print("main()", szName, num1, num2);
dofile("test1.lua") --加载并编译运行脚本
local nRandMax = GetRandMax();
local nRand = math.random(nRandMax);
print("nRand =", nRand)
return 1;
end
看上去是这样的,非常简单,通过dofile对test1.lua文件进行加载并编译运行,这部操作会将test1.lua文件中的函数和变量压入全局的虚拟栈中,这样就可以实现对GetRandMax()调用。但是这里有个问题:dofile函数接受的是需要引用的外部脚本的路径,如果多次调用会不胜其烦,而且效率不高。可能有人谁说,那我们直接把dofile作为全局函数执行,就像这样: