1.变量
变量没有预定义的类型,每一个变量都可能包含任一种类型的值
Nil Lua中特殊的类型,一个全局类型没有被赋值以前默认值为nil,给全局变量付nil可以删除该变量
Boolean 两个取值false和true.但Lua中所有值都可以作为条件,在控制结构的条件中除了false和nil为假,其他都为真.所以Lua认为0和空字符串都是真.
Number Lua中没有整数,只有实数.
String Lua是8位字节,所以字符串可以包含任何数值字符,包括嵌入的0
转义字符:
\a bell \b back space -- 后退
\f form feed -- 换页 \n newline -- 换行
\r carriage return -- 回车 \t horizontal tab -- 制表
\v vertical tab \\ backslash -- "\"
\" double quote -- 双引号 \' single quote -- 单引号
\[ left square bracket -- 左中括号 \] right square bracket -- 右中括号
还可以用[[…]]表示字符串,这种形式的字符串可以包含多行可以嵌套且不会解释转义序列.
运行时,Lua会自动在string和number之间自动进行类型转换.
2.算术运算符
二元运算符:+ - * / ^ (加减乘除幂)
一元运算符:- (负值)
这些运算符的操作数都是实数。
3.关系运算符
< > <= >= == ~=
==和~=比较两个值,如果两个值类型不同Lua认为两者不同;nil只和自己相等.
4.逻辑运算符
and or not
逻辑运算符认为false和nil是假(false),其他为真,0也是true.
and的优先级比or高。
a and b -- 如果a为false,则返回a,否则返回b
a or b -- 如果a为true,则返回a,否则返回b
C语言中的三元运算符
a ? b : c
在Lua中可以这样实现:
(a and b) or c
5.连接运算符
.. --两个点
字符串连接,如果操作数为数字,Lua将数字转成字符串
6.优先级
从高到低的顺序:
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or
除了^和..外所有的二元运算符都是左连接的。
7.表的构造
构造器是创建和初始化表的表达式。表是Lua特有的功能强大的东西。最简单的构造函数是{},用来创建一个空表。可以直接初始化数组(第一个元素索引为1)
不管用何种方式创建table,我们都可以向表中添加或者删除任何类型的域,构造函数仅仅影响表的初始化。