【问题标题】:How to use Lua require() function to access a module before the actual address?如何使用 Lua 的 require() 函数在实际地址之前访问模块?
【发布时间】:2017-01-15 21:23:53
【问题描述】:

例如: 我在一个名为“tuna”的文件夹中,想要一个位于“tuna”之前的文件:

例如:require "some-file.lua/tuna" 但我不知道该怎么做。

【问题讨论】:

  • 文件before是什么意思?
  • 表示在它所在的文件夹中。
  • 你知道当你在 CMD 中输入 cd.. 吗?就是这样。

标签: lua require


【解决方案1】:

您应该了解 Lua 如何在需要时搜索文件。

package.path 是一个字符串,用于确定它应该在哪里以及如何搜索您需要的文件。它通常看起来像这样:

"/some/path/?.lua; /some/other/path/?.lua; ?.lua;"

当你调用require("module")时,Lua会取package.path中字符串中包含的第一个路径(路径用分号分隔,所以第一个路径是/some/path/?.lua),并替换了?中的? string 与传递给 require 的字符串。

所以 Lua 会首先在 /some/path/module.lua 搜索你的模块。

如果找到该文件,则执行该文件,否则转到下一个路径:它将搜索/some/other/path/module.lua,最后搜索module.lua。

现在,如果您的目录如下所示:

Outer_dir = {
    tuna = {
        main.lua,
        tuna.lua
    },
    module.lua
} --didn't know how to represent a tree lol

而且,如果您通常从 main.lua 访问 tuna.lua,只需键入 require("tuna"),那么您的 package.path 必须类似于 /Outer_dir/tuna/?.lua。为了确保你可以要求module.lua,它是“之前”的tuna.lua,你应该将你的package.path字符串更改为/Outer_dir/?.lua(这意味着你应该使用require("tuna/tuna") to access tuna.lua) or to/Outer_dir/tuna/?.lua; /Outer_dir/?.luaso that eitherrequire("tuna")andrequire("module")` 将完美运行。

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多