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

2024-01-18

The Lua 规范说的是package.config http://www.lua.org/manual/5.2/manual.html#pdf-package.config(编号是我添加的):

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

我的转述:

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

到目前为止,一切都很好,但最后两行对我来说并不完全清楚。

  1. 为什么它说“在 Windows 的路径中”?这是否意味着在其他平台上,这没有任何意义?如果是这样,为什么?
  2. 我花了一段时间才明白这一点,但最终规格的另一部分 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(使用前将#替换为@)

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

  • Lua 中的“主”函数?

    在 python 中 通常会定义一个 main 函数 以便允许脚本用作模块 如果需要 def main print Hello world return 0 if name main sys exit main 在Lua中 这个习语if n
  • 为什么这个 Lua 优化 hack 会提高性能?

    我正在寻找一个描述提高 Lua 性能的各种技术的文档 http www lua org gems sample pdf脚本代码 我很震惊竟然需要这样的技巧 虽然我引用的是 Lua 但我在 Javascript 中也见过类似的 hack 为什
  • 迭代包括空行在内的行

    给定一个带有一些空行的多行字符串 我如何在Lua中迭代行包括空行 local s foo nbar n njim for line in magiclines s do print line and blank or line end gt
  • Lua:“拖动”数组中的元素序列

    我正在尝试创建一个函数 将连续数量的元素 拖动 到数组中的新位置 并限制为数组的当前大小 其他项目应该围绕 拖动 的项目晃动 例如 如果我的数组有 7 个元素 并且我想拖动中间的三个 1 2 3 4 5 6 7 lt keys a b C
  • 仅当 Perl 脚本未使用 require 加载时,如何才能运行它?

    我有一个 Perl 脚本 如果直接从命令行调用它 我想运行sub main 如果使用 require 调用它 我不想执行任何操作并等待调用者脚本调用sub job闲暇时 对于需要从脚本和 Perl 模块运行的代码 有一个推荐的 Perl 解
  • 使用 OOP 的闭包方法时如何实现受保护的成员?

    现在我正在使用实施 OOP 的闭包 http lua users org wiki ObjectOrientationClosureApproach在卢阿 下面是一个简短的示例 我的问题发生在尝试实施时stronger heal insid
  • 使用 EVAL、SCAN 和 DEL 的 Redis 通配符删除脚本返回“非确定性命令后不允许写入命令”

    因此 我正在寻求构建一个 lua 脚本 该脚本使用 SCAN 根据模式查找键并删除它们 原子地 我首先准备了以下脚本 local keys local done false local cursor 0 repeat local resul
  • 在 Mocha 中处理未随 npm 安装的依赖项?

    我有一个正在运行的 Node 应用程序 我正在尝试添加 Mocha 测试 但遇到了一些奇怪的导入错误 这是我的文件结构 package json index js src chart js test test chart js 这就是我的c
  • “require(x)”和“import x”之间的区别

    我刚刚开始开发一个将与 MongoDB 交互的小型节点项目 但是 我似乎无法正确导入相关的节点模块 即使我已经通过以下方式正确安装了它们npm 例如 以下代码会抛出错误 告诉我 express 没有默认导出 import express f
  • 我应该用 C++ 封装 Lua 代码的哪些代码?

    我终于将 LuaBind 配置为与我的 C 项目一起使用 我最近发现 Tiled 地图编辑器可以选择将文件导出为 lua 所以我想尝试一下 我将使用什么代码来封装下面粘贴的代码以使其与我的 C RPG 项目一起使用 return versi
  • lua http套接字超时

    LuaSocket HTTP 模块文档说可以在 HTTP 连接上设置超时 可以设置以下常量来控制 HTTP 模块的默认行为 PORT 用于连接的默认端口 PROXY 用于连接的默认代理 TIMEOUT 设置所有I O操作的超时时间 USER
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • 检查多个位置的值并仅在源唯一时返回匹配项

    假设我有一个清单Vendors 阿斯达 乐购 Spar 我有一个清单Sources 或者这个类比中的供应商 家乐氏 Kellogg 吉百利 Cadbury 雀巢 Nestle 强生 Johnsons 帮宝适 Pampers Simple 等
  • Lua 将字符串转换为数字 - 取决于语言环境

    刚刚注意到字符串 and tonumber 在 Lua 中是依赖于语言环境的 知道如何在不使用的情况下将字符串转换为数字tonumber 谢谢 例如将字符串 58 5 转换为 58 5 另外 当我尝试将带点的数字传递给函数时 该函数会转换
  • 比较 Lua 中的日期

    我有一个带有日期表的变量 如下所示 table day number 15 year number 2015 month number 2 如何获取当前日期与上述日期之间的天数 非常感谢 您可以使用os time 将表转换为秒并获取当前时间
  • 如何在 emacs lua-mode 中配置缩进?

    完整的 emacs 新手在这里 我在 Ubuntu 上使用 emacs 23 1 1emacs 入门套件 https github com technomancy emacs starter kit 我主要在 lua 模式下工作 安装了pa
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • Lua 访问表的键和值

    我想在关卡编辑器中读取 Lua 文件 这样我就可以以可视化格式显示其数据供用户编辑 如果我有一个像这样的 Lua 表 properties Speed 10 TurnSpeed 5 Speed显然是关键并且10价值 我知道如果我知道像这样的
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • Ruby require 'file' 不起作用,但 require './file' 可以。为什么?

    我有一个充满 ruby 文件的文件夹 当我尝试使用位于同一目录中的另一个文件中的一个文件时require file 我得到一个LoadError但是当我使用require file 一切正常 有人可以向我解释为什么会发生这种情况吗 如果有什

随机推荐