Q:什么样的文件是Lua脚本?
A:存储了使用Lua语言编写的脚本的文件都可以称作Lua脚本,但一般为了一眼就能看出来,将文件的后缀命名为.lua。
Q:如何启动Lua?
A:
1、命令行中输入lua
,这样会启动Lua的“stand-alone interpreter”模式,可以像使用shell一样使用它。
2、将Lua脚本存入“*.lua”文件中,命令行中使用lua *.lua
执行脚本。
Q:Hello World?
A:print("Hello World")
。即可以在“stand-alone interpreter”模式中执行,也可以将其写入文件执行。
Q:如何退出Lua的“stand-alone interpreter”模式?
A:优雅一些的做法是Ctrl-D
或者os.exit()
;暴力一些的做法可以是Ctrl-C
。
Q:什么是“Chunks”?
A:一段代码,就好像C语言中“{}”括起来的代码段一样。
Q:在Lua的“stand-alone interpreter”模式下,为什么有时候提示符变成了“>>”?
A:Lua交互模式的默认提示符是“>”,你每按一次回车,lua都会把你之前输入的东西认为是一个chunk。但如果Lua判断出你输入的东西不是一个完整的chunk,则提示符会变为“>>”用以提示你将未完成的chunk输入完整。
Q:lua -l a.lua -l b.lua
?
A:“-l”选项可以将指定文件中的代码加载至当前脚本并执行(实际上通过require实现)。如问题中的例子,可以理解为先执行a.lua中的代码,再执行b.lua中的代码。
Q:lua -i b.lua
?
A:“-i”选项代表在执行完指定的脚本后立即进入“stand-alone interpreter”模式。
Q:dofile("a.lua")
?
A:加载指定文件中的代码并执行。
Q:如何使用变量?
A:Lua中的变量无需声明,直接赋个值就可以使用,默认都是全局的(想创建局部变量需要local
关键字)。甚至于使用未初始化的变量也不会报错,得到的值是nil
。
> print(x)
nil
> x = 9
> print(x)
9
Q:变量的命名规范?
A:由字母,数字,下划线组成,不能以数字开始。以下划线开头的并且全是大写的变量名很可能是保留变量,小心使用。
Q:Lua中的关键字?
A:
and break do else elseif end false for function if in
local nil not or repeat return then true until while
Q:是否对大小写敏感?
A:是。
Q:如何注释代码?
A:使用--
注释一行代码;使用--[[ ]]
注释一段代码。
Q:有的lua脚本中第一行类似于#!/usr/local/bin/lua
?
A:指定脚本解释器,就好像shell的一样。指定了脚本解释器的lua脚本可以直接被调用,而无需使用lua
命令。
Q:lua -e 'print("Hello World!")'"
?
A:”-e”选项允许在命令行上直接执行脚本。
Q:如何向lua脚本传递参数?
A:lua脚本接收的参数保存在一个名为arg
的的变量中,它实际是一个”table”,使用方式类似于C语言中的数组。
-- a.lua文件的内容。print("The first arg is:", arg[1])print("The second arg is:", arg[2])print("The third arg is:", arg[3])
prompt> lua a.lua 5 7 9
The first arg is: 5
The second arg is: 7
The third arg is: 9
附加:
1、Lua中每行的结尾可以不写分号,甚至同一行的两条语句之间都可以不写。不过按照惯例还是写比较好,代码也更美观。
2、更改“_PROMPT”变量的值可以更改Lua的“stand-alone interpreter”模式下的默认提示符:
> _PROMPT=’my_prompt>’
my_prompt>
3、想要删除一个全局变量,可以将其值赋为nil
,Lua会回收其所占的内存空间。
4、变量名字中的字母字母不仅可以是英文字母,还可以是你所使用的语言中的字母。不过不建议这么写,因为在不支持这种语言的机器上你的程序将无法运行。
5、lua的变量类型是动态的,不用指定类型,你给它什么类型的值,他就是什么类型的。
6、Lua中所有未初始化的变量的值都是nil
。