在交互模式下打开Lua文件

4

我正在开始自学Lua,基本上没有编程知识。我了解类型、函数、表等基本概念。但是在遵循Lua.org的教程时,我现在正在"模块教程"中遇到了问题,不太理解调用交互模式文件的正确/最简单方法。

如果我使用Notepad++或Scite创建了一个文件,有人可以帮助我理解如何使用正确的命名方式打开该文件吗?

1个回答

8
假设您的文件名为foo.lua,则在Lua解释器(即交互模式)中使用loadfile。请注意,loadfile不会引发错误,因此最好使用assert与之配合使用。
f = assert(loadfile("foo.lua"))

它将把foo.lua中的块加载到函数f中。请注意,这只会加载代码块,而不会运行它。要运行代码块,请调用该函数:
f()

如果您需要立即运行它,可以使用dofile

dofile("foo.lua") 

Lua使用package.path作为搜索路径,其默认值来自LUA_PATH。然而,在实践中最好使用适当的相对路径。

4
一个常见的习语以一步完成这个操作是 assert(loadfile("foo.lua"))(); 这会加载并运行文件,如果加载失败,则显示错误。 - ToxicFrog
谢谢!我在交互模式下执行了loadfileassert方法,都成功了!这样就清楚了。起初我遇到了一个错误,但很快意识到我的Lua文件的根目录不在Lua 5.1的根目录中。将该文件简单地移动到正确位置后,一切都运行得非常完美! - Pwrcdr87
其实,我还有一个愚蠢的问题。如果我需要在另一个目录(Lua 5.1根目录之外)中打开文件该怎么办?如果我运行 assert(loadfile("foo.lua))(),但它在另一个文件夹中,语法会如何改变?再次感谢您的帮助! - Pwrcdr87
@ToxicFrog 没错,最好使用 assert,因为 loadfile 不会引发错误,我会更新答案。但是,再次强调,loadfile 只会加载文件,而不会运行它。 - Yu Hao
@Pwrcdr87 使用正确的相对路径即可,或查看更新后的答案。 - Yu Hao
你们太棒了!非常感谢你们的帮助。我现在完全明白了。 - Pwrcdr87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接