Lua的“package.config”中的最后几行是什么意思?

时间:2015-08-09 12:47:53

标签: lua require

Lua specs say about package.config(由我添加的编号):

  
      
  1. 第一行是目录分隔符字符串。对于Windows,默认值为“\”,对于所有其他系统,默认值为“/”。
  2.   
  3. 第二行是分隔路径中模板的字符。默认为“;”。
  4.   
  5. 第三行是标记模板中替换点的字符串。默认为“?”。
  6.   
  7. 第四行是一个字符串,在Windows中的路径中,由可执行文件的目录替换。默认为“!”。
  8.   
  9. 第五行是在构建luaopen_函数名时忽略其前面的所有文本的标记。默认为“-”。
  10.   

我的解释:

  1. 绝对清晰(Windows /其他系统的示例使其成为万无一失)
  2. 路径字符串中可以有多个路径。它们由此符号分隔(默认为;)。
  3. 无论Lua在路径字符串中找到此字符(默认情况下为?),它都会将其替换为提供给requirepackage.searchpath函数的模块名称,并检查该文件是否存在存在。
  4. 到目前为止,这么好,但最后两行对我来说并不完全清楚。

    1. 为什么说“在Windows中的路径”?这是否意味着在其他平台上,这没有任何意义?如果是这样,为什么?
    2. 我花了一段时间来理解这一点,但最终another part of the specs给了我一个暗示:

        

      此C函数的名称是字符串“luaopen_”与模块名称的副本连接,其中每个点都用下划线替换。此外,如果模块名称具有连字符,则删除其前缀(包括)第一个连字符的前缀。例如,如果模块名称为a.v1-b.c,则函数名称为luaopen_b_c

      此符号(默认情况下为-)旨在同时提供不同版本的库 - 可能使用未加前缀的最新版本的符号链接,以便可以在两个路径上访问同一个库(即在两个模块名称下),但只有一个C符号名称?

1 个答案:

答案 0 :(得分:1)

4: Linux的应用程序在系统范围内安装了库;但是,对于Windows,库可以安装在当前目录中。

5:我相信版本控制和项目分叉将成为背后的原因。