Lua学习笔记(2)——表达式
算术操作符
1.常规的算术操作符:二元的 “ + "," - "," * "," / "," ^ ", " % ";一元的:“-”(负号)
2.取模:a%b = a - floor ( a / b ) * b。对于整数来说通常是有意义的。而对于实数则可能有其他用途:x%1的结果是x的小数部分,而x-x%1结果是其整数部分。
![](https://img.haomeiwen.com/i2036996/4374fa65dd0fb706.png)
关系操作符
1.关系操作符:>, <, <=, >= , == , ~= 。
2.所有关系操作符的运算的结果都是true或false。
3.任意两个值需要类型相同,值相等才会相等。类型不同Lua就人为它们不相等。
4.对于table,userdata和函数,作引用比较。即,当它们引用同一个对象时才认为它们相等。
![](https://img.haomeiwen.com/i2036996/5d7e9b32137e6a40.png)
5.比较两个不同类型值时需要注意,字符串是按字母次序作比较的。例如:2<15 -> true,"2"<"15" -> false(因为是按照字母次序来作比较的)。
逻辑操作符
1.逻辑操作符:and, or ,not
2.false和nil视为假,其他任何东西视为真。
3.and,第一个操作数为假时返回第一个操作数,反之返回第二个操作数。
4.or,第一个操作数为真时返回第一个操作数,反之返回第二个操作数。
![](https://img.haomeiwen.com/i2036996/13bc0e15a7be785c.png)
5.and 和 or 都使用“短路求值(short-cut evaluation)”,即只会在需要时才去评估第二个操作数。短路求值可以确保像(type(v) == "table" and v.tag == "h1" )这样的表达式不会导致运行时错误(当v不是一个table时,Lua不会对v.tag进行求值评估)。
![](https://img.haomeiwen.com/i2036996/0a64bb7125bf915b.png)
6.x = x or v 等价于 if not x then x = v end(当x没有初始化时,将其设为一个默认值v)。
7.not,只返回true或false。
![](https://img.haomeiwen.com/i2036996/4f4e97256b7a3241.png)
优先级
![](https://img.haomeiwen.com/i2036996/7f4b53ebce31f24f.png)
1.指数操作符“^”和连接操作符“..”是“右结合”,其他所有操作符为“左结合”。
![](https://img.haomeiwen.com/i2036996/80dfa3a4c49fb184.png)
构造式
1.构造式是用于创建和初始化table的表达式。
2.最简单的构造式是空构造式 {} ,用于创建一个空table,或者初始化数组。
![](https://img.haomeiwen.com/i2036996/bb6d5d9502906c98.png)
3. a = {x = 10, y = 20} 等价于 a = {}; a.x = 10; a.y = 20;
4.table创建后可以增删改:
![](https://img.haomeiwen.com/i2036996/d51480552a311506.png)
5.链表代码:
![](https://img.haomeiwen.com/i2036996/5fdf63b67b9573ac.png)
![](https://img.haomeiwen.com/i2036996/e62b1c137cfa5de1.png)
6.记录风格的初始化和列表风格的初始化混合在一个构造式中:
![](https://img.haomeiwen.com/i2036996/bd968bd86df2f63e.png)
![](https://img.haomeiwen.com/i2036996/9b44c13e1681d371.png)
7.Lua提供一种通用的格式,允许在方括号之间,显式地用一个表达式来初始化索引值。
![](https://img.haomeiwen.com/i2036996/22c3585e9e73aaaf.png)
8. { x = 0, y=0 } 等价于 { ["x"] = 0, ["y"] = 0 }
9.{"r", "g","b"} 等价于 { [1] = "r", [2] = "g", [3] = "b"}
10.构造式中可以用分号代替逗号,区分构造式中不同的成分:
![](https://img.haomeiwen.com/i2036996/637dfc3ecf1e60cb.png)