lua运行外部程序_Lua脚本调用外部脚本

这篇博客探讨了在Lua中如何优雅地调用外部脚本,避免dofile带来的路径问题和循环引用风险。作者建议在C/C++中实现Include接口函数,使用集合来防止重复包含,并通过获取当前执行路径构建绝对路径,简化脚本引用过程。
摘要由CSDN通过智能技术生成

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作为全局函数执行,就像这样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值