尝试在命令行上使用Lua模块失败了。

我正在尝试学习如何使用Lua模块。我一直在阅读以下手册:

http://lua-users.org/wiki/ModulesTutorial

不幸的是,我甚至无法让第一个示例运行!我已经完成了以下操作:

创建了一个名为“mymodule.lua”的文件,其内容如下:

local mymodule = {}

function mymodule.foo()
    print("Hello World!")
end

return mymodule

然后从命令行中,在mymodule.lua文件所在的文件夹中,尝试执行以下操作:

mymodule = require "mymodule"

但是我得到了以下错误消息:

myserver:/usr/share/x/research/# mymodule = require "mymodule"
-ash: mymodule: not found

这个是有效的:

myserver:/usr/share/x/research/# local mymodule = require "mymodule"

但是当我尝试运行foo()方法时,它会失败:

myserver:/usr/share/x/research/# mymodule.foo()
-ash: syntax error: bad function name
myserver:/usr/share/x/research/#

我猜这是有道理的,因为我在命令行中将mymodule声明为局部变量而不是全局变量。

我想问的问题是为什么我不能在命令行上全局声明模块。

手册说我应该从“交互式解释器”中运行它。我使用的是Linux中的标准命令行/终端窗口...这可能是问题吗?我通常必须在所有lua命令前加上“lua”。

感谢您的建议。

点赞
用户258523
用户258523

lua 不是你的 shell。你需要在 lua 解释器内运行那段代码,而不是在你的 shell 提示符下运行。

myserver:/usr/share/x/research/# lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> mymodule = require "mymodule"
> mymodule.foo()
2013-08-01 14:38:31