算术操作符
1.常规的算术操作符:二元的 “ + "," - "," * "," / "," ^ ", " % ";一元的:“-”(负号)
2.取模:a%b = a - floor ( a / b ) * b。对于整数来说通常是有意义的。而对于实数则可能有其他用途:x%1的结果是x的小数部分,而x-x%1结果是其整数部分。

关系操作符
1.关系操作符:>, <, <=, >= , == , ~= 。
2.所有关系操作符的运算的结果都是true或false。
3.任意两个值需要类型相同,值相等才会相等。类型不同Lua就人为它们不相等。
4.对于table,userdata和函数,作引用比较。即,当它们引用同一个对象时才认为它们相等。

5.比较两个不同类型值时需要注意,字符串是按字母次序作比较的。例如:2<15 -> true,"2"<"15" -> false(因为是按照字母次序来作比较的)。
逻辑操作符
1.逻辑操作符:and, or ,not
2.false和nil视为假,其他任何东西视为真。
3.and,第一个操作数为假时返回第一个操作数,反之返回第二个操作数。
4.or,第一个操作数为真时返回第一个操作数,反之返回第二个操作数。

5.and 和 or 都使用“短路求值(short-cut evaluation)”,即只会在需要时才去评估第二个操作数。短路求值可以确保像(type(v) == "table" and v.tag == "h1" )这样的表达式不会导致运行时错误(当v不是一个table时,Lua不会对v.tag进行求值评估)。

6.x = x or v 等价于 if not x then x = v end(当x没有初始化时,将其设为一个默认值v)。
7.not,只返回true或false。

优先级

1.指数操作符“^”和连接操作符“..”是“右结合”,其他所有操作符为“左结合”。

构造式
1.构造式是用于创建和初始化table的表达式。
2.最简单的构造式是空构造式 {} ,用于创建一个空table,或者初始化数组。

3. a = {x = 10, y = 20} 等价于 a = {}; a.x = 10; a.y = 20;
4.table创建后可以增删改:

5.链表代码:


6.记录风格的初始化和列表风格的初始化混合在一个构造式中:


7.Lua提供一种通用的格式,允许在方括号之间,显式地用一个表达式来初始化索引值。

8. { x = 0, y=0 } 等价于 { ["x"] = 0, ["y"] = 0 }
9.{"r", "g","b"} 等价于 { [1] = "r", [2] = "g", [3] = "b"}
10.构造式中可以用分号代替逗号,区分构造式中不同的成分:

网友评论