2015-10-15 67 views
2

我在安装时遇到困难,需要安装一般软件包。如果我开始要么lua或torch7(th),我将随后经由需要它如何使用交互式lua或火炬会话正确地要求lua包?

luarocks install inspect 

然后:例如,对于inspect.lua包,我首先经由luarocks安装为在包装(https://github.com/kikito/inspect.lua)指示:

local inspect = require 'inspect' 

此检查变量始终是nil

require 'inspect'; print(inspect) 

回报nil

最初,我不确定它是否返回nil,所以当我尝试时,例如inspect(1)我会收到错误“尝试调用全局”检查'(一个无值)“。

使用炬,似乎我可以使用“导入”检查'“成功,但我不知道为什么这个工程,并要求不成功。

我在做什么错?

+0

什么是'需要“检查”;打印(检查)输出? –

+0

它返回'nil'。 – Jonathan

+4

在交互式会话中输入Lua代码时,应该省略'local'(或者用'do ... end'包围整个代码)。 – siffiejoe

回答

3

用于发现的积分@siffiejoe

Lua解释器以块形式工作。每个块被视为一个单独的执行集。因此,如果你写:

local a = 5 
local b = a 

在一个文件,它会正确设置b等于5,因为一个Lua文件作为一个大的块处理。但是,在REPL中,清除了第一行局部变量之后。

这只是意味着你要么应该强迫你的代码放到一个块:

do local inspect = require 'inspect'; print(inspect) end 

,或者使用跨块的执行仍然存在一个全局变量:

$ inspect = require 'inspect' 
$ print(inspect) 
+0

我想知道为什么它没有给出错误,这说明了这一点。 – Jonathan