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

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 符号名称?

点赞
用户3188999
用户3188999

4: 对于 Linux,应用程序已经安装了全局的库,然而在 Windows 上,库可以被安装在当前目录中。

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

2016-04-05 15:42:29