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

Tho*_*s W 5 lua require

Lua的规范说的package.config(由我添加的编号方式):

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

我的解释:

  1. 绝对清晰(Windows /其他系统的例子使其成为万无一失的证明)
  2. 路径字符串中可以有多个路径.它们由此符号分隔(;默认情况下).
  3. 无论Lua在路径字符串中找到此字符(?默认情况下),它都会将其替换为提供给requirepackage.searchpath函数的模块名称,并检查该文件是否存在.

到目前为止,这么好,但最后两行对我来说并不完全清楚.

  1. 为什么它说"在Windows中的路径"?这是否意味着在其他平台上,这没有任何意义?如果是这样,为什么?
  2. 我花了一段时间来理解这一点,但最终规范的另一部分给了我一个提示:

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

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

小智 1

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

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