通过相对路径加载Lua文件
发布时间:2020-12-15 00:21:39 所属栏目:大数据 来源:网络整理
导读:如果我有这样的文件结构: ./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里面,我也想加载其他必要的模
如果我有这样的文件结构:
./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将自动更新。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |