在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近在参与一个基于C++/LUA的项目, 用LUA实现单元测试时需要在测试代码内对单元测试库文件进行加载, 目的是希望做到在任何测试文件内都可以运行测试, 而不是必须在特定的入口执行. 但是使用LUA内置require函数加载会失败, 因为其是lua实现module功能的一个函数所以会有一些和模块相关的特性, 在定制文件加载目录时会受到一些局限(比如想加载上层目录的模块时), 后来在看lunit代码时找到了一个实现思路: local function loadtestcase(filename)
关键就是loadfile函数, 通过手册了解, 原来此函数会加载一个lua文件然后将其保存为chunk(语句组), 以下是手册对语句组的介绍.
所以loadfile加载回来的语句组其实就是是个匿名函数, 我们只需执行此语句组则目标文件就会加载成功, 就像PHP的include函数一样, 化简的使用办法: loadfile( filename )()
现在可以试试加载你需要的文件了. loadfile( "../foo_one.lua" )()
参考资料: 云风的中文lua手册 - http://www.codingnow.com/2000/download/lua_manual.html lua原版手册 - http://www.lua.org/manual/5.1/manual.html
|
请发表评论