火炬的包含和要求的差异

时间:2016-08-04 11:52:32

标签: torch

火炬(lua)中require和include之间的区别是什么?当我们称之为include或require时它在后面做了什么? 例如:

 include('util/test.lua')
 require('util/test.lua')

2 个答案:

答案 0 :(得分:0)

在require中如果编译器找不到特定的文件,编译器将停止编译代码中的其他部分

但是如果编译器无法找到该文件,则包括在内,开始编译没有错误的其他代码部分

答案 1 :(得分:0)

火炬包含只是Lua dofile,可以在火炬source中看到:

function torch.include(package, file)
   dofile(torch.packageLuaPath(package) .. '/' .. file)
end

另一方面,Lua require用于加载模块。另请参阅this answer。

  

粗略地说,要求与dofile完成相同的工作,但有两个重要的   差异。首先,要求在路径中搜索文件;第二,   要求控制是否已经运行文件以避免   重复工作。由于这些功能,需要的是   Lua中用于加载库的首选函数。