我有以下文件夹结构
- 的 folder1中
------ main.lua
------的 sub_folder
--------- func1.lua
- 的文件夹2
------ func2.lua
我想通过func1.lua
命令{/ 1}} func2.lua
加载main.lua
和require
PS:文件夹中的init.lua做什么
答案 0 :(得分:2)
在vanilla lua中,你可以像这样加载它们:
local func1 = loadfile "sub_folder/func1.lua"
local func2 = loadfile "../folder2/func2.lua"
请参阅:Pil Chapter 8
如果您在某些其他应用程序中使用Lua(即游戏,软件等),那么您需要告诉我们这是什么,或者我们无法帮助您。这也适用于你的P.S问题。但通常,init.lua
通常是第一个要执行的文件,即它会加载其他文件等。
答案 1 :(得分:0)
func1.lua
可以通过
require 'sub_folder.func1'
因为sub_folder
与main.lua
位于同一文件夹中。
对于func2.lua
,没有办法告诉require
搜索“一级”,所以你必须告诉Lua如何找到所需的模块。这可以通过至少两种方式完成:
LUA_PATH
环境变量:
path/to/folder2/?.lua
,然后main.lua
可以require "func2"
。 path/to/parent-of-folder2/?.lua
添加main.lua
,然后require "folder2.func2"
可以package.path
。通过编辑脚本中的package.path = package.path .. ';../?.lua'
require 'func2'
:
package.path = package.path .. ';../../?.lua'
require 'folder2.func2'
或
folder1
第一种方法更“永久”,因为设置在OS环境中;即使您将folder2
移动到系统上的其他位置,也不会移动folder2
,它也会有效。第二种方法是动态的,因此无论您放置文件夹结构的位置如何,它都会起作用,即,如果folder1
始终是{{1}}的兄弟文件夹,则方法2可用,方法1失败(或要求您编辑LUA_PATH)。