gpt4 book ai didi

lua - 通过相对路径加载 Lua 文件

转载 作者:行者123 更新时间:2023-12-03 08:26:48 26 4
gpt4 key购买 nike

如果我有这样的文件结构:

./main.lua
./mylib/mylib.lua
./mylib/mylib-utils.lua
./mylib/mylib-helpers.lua
./mylib/mylib-other-stuff.lua

来自 main.lua文件 mylib.lua可以加载完整路径 require('mylib.mylib') .但是里面 mylib.lua我还想加载其他必要的模块,我不想总是指定完整路径(例如 mylib.mylib-utils )。如果我决定移动文件夹,我将进行大量搜索和替换。有没有办法只使用路径的相对部分?

UPD。如果这很重要,我正在将 Lua 与 Corona SDK 一起使用。

最佳答案

有一种方法可以推导出文件的“本地路径”(更具体地说,是用于加载文件的字符串)。

如果您需要 lib.foo.bar 中的文件,你可能正在做这样的事情:

require 'lib.foo.bar'

然后您可以将文件的路径作为第一个元素(也是唯一的) ...变量,当您在所有功能之外时。换句话说:
-- lib/foo/bar.lua
local pathOfThisFile = ... -- pathOfThisFile is now 'lib.foo.bar'

现在,要获取“文件夹”,您需要删除文件名。最简单的方法是使用匹配:
local folderOfThisFile = (...):match("(.-)[^%.]+$") -- returns 'lib.foo.'

你有它。现在您可以将该字符串附加到其他文件名并使用它来要求:
require(folderOfThisFile .. 'baz')     -- require('lib.foo.baz')
require(folderOfThisFile .. 'bazinga') -- require('lib.foo.bazinga')

如果你搬家 bar.lua周围,​​ folderOfThisFile会自动更新。

关于lua - 通过相对路径加载 Lua 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9145432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com