1

我正在尝试学习如何使用 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”。

任何建议,将不胜感激。

4

1 回答 1

2

lua 不是你的外壳。您需要从 lua interpeter 内部而不是在 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-01T14:38:31.063 回答