数据类型
Lua 是动态类型语言,变量不需要类型定义。Lua中有8个基本类型
可以使用type()函数来探测"值"对应的类型
关键词 | 类型 | 说明 |
---|---|---|
nil | nil | 变量在没有被赋值前的默认值,给变量赋值nil相当于删除变量 |
boolean | 布尔类型 | true或false. 在控制结构的条件判决语句中false和nil为假,其余值都为真所以在Lua中0和空串的判断是为真 |
number | 数字类型 | 在Lua没有区分整数或浮点数 |
string | 字符 | 字符一经创建是不可以修改的,Lua可自动进行内存与释放。可使用单引号,双引号和[[ ]]来表示 |
function | 函数 | 由C或Lua编写的函数 |
userdata | 自定义类型 | userdata可以将C数据存放在Lua变量中,userdata在Lua中除了赋值和相等比较外没有预定义的操作 |
thread | 线程 | 表示执行的独立线程 |
table | 数组、容器 | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字或者是字符串。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表 |
表达示
- 算术运算符
加: +
减: -
乘: *
除: /
幂: ^
- 关系运算符
> : 大于
>= : 大于等于
< : 小于
<= : 小于等于
== : 相等
~= : 不相等
- 逻辑运算符
逻辑运算符认为false和nil是假(false); 其他为真,0也是真
and : 注意不是我们一般意义上讲的并且意思了
or : 注意不是我们一般意义上讲的或者
not : 取反
and和or的运算结果不是true和false,而是和它的两个操作数相关
a and b -- 如果a为false,则返回a,否则返回b
a or b -- 如果a为true,则返回a,否则返回b
示例说明:
print(10 and 20 ) -> 20
print(nil and 20) -> nil
print(10 or 20) ->10
print(nil and 20) -> 20
print(not nil) ->true
print(not 0)->false
三元运算符
(a and b) or c
- 连接运算符
用两个点表示: ..
print('a'..'b') ->'ab'
5.优先级
^
not - (unary)
* /
+ -
..
< > <= >= ~= ==
and
or