Lua
自带解释器(Lua.c
编译生成的可执行文件)的交互模式会把每一单独的输入行看做是一个chunk
,除非这一行不是完整的命令,例如:
> function test()
>> print("test")
>> end
>>
标示这一行和之前的行属于同一行。
因此,如果在一行输入local i = 1
,Lua
就会运行这个chunk
。再另起一行输入新命令以后,相当于一个新的chunk
,前一行的local
变量是不可见的。举例如下:
> local i = 10
> print(i)
nil
解决这个问题可以使用do-end
将这个代码包成一个chunk
:
> do
>> local i = 10
>> print(i)
>> end
10