Lua表达式 · 花生肉泥
算术运算符
下表列出了lua语言中常用算术运算符(设定A的值为10,B的值为20)
操作符 | 描述 | 示例 |
---|---|---|
+ | 加法 | A + B 输出 30 |
- | 减法 | A - B 输出 -10 |
* | 乘法 | A * B 输出 200 |
/ | 除法 | B / A 输出 2 |
% | 取余 | B % A 输出 0 |
^ | 乘幂 | A ^ 2 输出 100 |
- | 负号 | -A 输出 -10 |
关系运算符
lua中的关系运算符有:
1 | < |
这些操作符返回结果为false或者true
==和~=比较两个值,如果两个值类型不同,lua认为两者不同;nil只和自己相等。lua通过引用比较tables、userdata、functions。也就是说当且仅当两者表示同一对象时相等。
1 | local a,b = 11,"33" |
A=10 B=20
操作符 | 描述 | 示例 |
---|---|---|
== | 等于,检测两个值是否相等,相等返回true,否则返回false | (A == B) 为false |
~= | 等于,检测两个值是否相等,相等返回false,否则返回true | (A ~= B) 为true |
> | 大于,如果左边的值大于右边的值,返回true,否则返回false | (A > B) 为false |
< | 小于,如果左边的值大于右边的值,返回false,否则返回true | (A >= B)返回false |
>= | 大于等于,如果左边的值大于等于右边的值,返回true,否则返回false | (A >= B) 返回false |
<= | 小于等于,如果左边的值小于等于右边的值,返回true,否则返回false | (A <= B) 返回true |
逻辑运算符
1 | and |
逻辑运算符认为false和nil是假(false),其他是真,0和空字符串也是true
and和or的运算结果不是true和false,而是他的两个操作数相关
a and b – 如果a为false,则返回a,否则返回b
a or b – 如果a为true,则返回a,否则返回b
1 | print(4 and 5) -- 5 |
A=10 B=20
操作符 | 描述 | 示例 |
---|---|---|
and | 逻辑与操作符,如果两边的操作都为true,则条件为true | (A and B) 为false |
or | 逻辑或操作符,如果两边的操作任意一个为true,则条件为true | (A or B) 为true |
not | 逻辑非运算符,与逻辑运算结果相反没如果条件为true,逻辑非为false | not(A and B)为true |
连接运算符
lua中字符串的连接操作符写作两个点(‘..’)
字符串连接,如果操作数为数字,lua将数字转换成字符串
如果前面连接的是数值,靠近数值边的连接符要有空格,若数值实在后面则无要求
1 | local a,b = 11,"33" |
优先级
从高到低的顺序
1 | ^ |
除了^和..以外所有的二元运算符都是左连接的
1 | --一个常见的错误 |
这里的错误是因为not a返回的是false,false和b不是一个类型,所以报错
1 | local a,b = 1,2 |
table构造
lua中表既不是值也不是变量,而是对象。lua表没有固定尺寸,可动态地增加元素
表的创建:创建一张空表:local t = {}
1 |
|
表的索引,下表是从1开始的
1 | local t = {"s" , 2 , 3 , x = "a"} |
取长度操作符
取长度操作符写作一元操作#,字符串的长度是他的字节数
table t的长度被定义成一个整数下表n,它满足t[n]不是nil而t[n+1]为nil,此外,如果t[1]为nil,n就可能是0
1 |
|