The Lua 规范说的是package.config http://www.lua.org/manual/5.2/manual.html#pdf-package.config(编号是我添加的):
- 第一行是目录分隔符字符串。默认为 '
\
' 对于 Windows 和 '/
' 对于所有其他系统。
- 第二行是分隔路径中模板的字符。默认为 '
;
'.
- 第三行是标记模板中替换点的字符串。默认为 '
?
'.
- 第四行是一个字符串,在 Windows 中的路径中,该字符串被可执行文件的目录替换。默认为 '
!
'.
- 第五行是一个标记,用于在构建时忽略其之前的所有文本
luaopen_
函数名称。默认为 '-
'.
我的转述:
- 绝对清晰(Windows/其他系统的示例使其万无一失)
- 路径字符串中可以有多个路径。它们由这个符号分隔(
;
默认情况下)。
- 无论 Lua 在路径字符串中找到这个字符(
?
默认情况下),它将替换为提供给的模块名称require
or package.searchpath
函数并检查该文件是否存在。
到目前为止,一切都很好,但最后两行对我来说并不完全清楚。
- 为什么它说“在 Windows 的路径中”?这是否意味着在其他平台上,这没有任何意义?如果是这样,为什么?
-
我花了一段时间才明白这一点,但最终规格的另一部分 http://www.lua.org/manual/5.2/manual.html#pdf-package.searchers给了我一个提示:
该 C 函数的名称是字符串“luaopen_
" 与模块名称的副本连接,其中每个点都替换为下划线。此外,如果模块名称有连字符,则删除其前缀(包括)第一个连字符。例如,如果模块名称是a.v1-b.c
,函数名称将是luaopen_b_c
.
这个符号也是如此(-
默认情况下)旨在同时提供一个库的不同版本 - 可能带有指向最新版本的无前缀符号链接,以便可以在两个路径上(即在两个模块名称下)访问同一个库,但仅使用一个 C符号名称?
4:Linux 的应用程序在系统范围内安装了库;但是,对于 Windows,可以将库安装在当前目录中。
5:我相信,版本控制和项目分叉是其背后的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)