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



Lua规范说关于package.config(编号由我添加):

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

我的释义:

  1. 绝对清晰(Windows/其他系统的示例使其不会被愚弄)
  2. 一个路径字符串中可以有多条路径。它们由这个符号(默认为;)分隔。
  3. 无论Lua在路径字符串(默认为?)中发现此字符,它都会将其替换为提供给requirepackage.searchpath函数的模块名称,并检查该文件是否存在。

到目前为止,一切都很好,但是最后两行我不太清楚。

  • 为什么说"in a path in Windows"?这是否意味着在其他平台上,这并不具有任何意义?如果是,为什么?
  • 我花了一段时间才弄明白这一点,但最终规格的另一部分给了我一个提示:

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

    那么这个符号(默认为-)是为了同时提供一个库的不同版本吗?  –可能与一个不带前缀的符号链接到最新版本,以便同一库将在两个路径上访问(即在两个模块名称下),但只有一个C符号名称?

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

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

    最新更新