我正在尝试学习如何使用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声明为local而不是global。
我想我的问题是为什么我不能在命令行上全局声明模块 手册说我应该从“交互式翻译”运行这个。我在linux中使用标准的命令行/终端窗口......这可能是问题吗?我通常必须在所有lua命令前添加“lua”。
任何建议都将不胜感激。
答案 0 :(得分: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()