1.关系运算符
< > <= >= == ~=
这些操作符返回结果为false或true.==和~=比较两个值,lua是强类型比较,如果两个值类型不同,Lua认为两者不同。 Lua通过引用比较tables、userdata、functions,只有当两者是同一对象时才相等。
> a = {x=1,y=0}
> b = {x=1,y=0}
> c == a
false
> c = a
> a == c
true
> a == b
false
数字、字符串的比较
> 0 == "0"
false
> 2 < 15
true
> "2" < "15" --按字母顺序进行比较
false
2.逻辑运算符
and or not
逻辑运算符认为false和nil是假,其他为真(true),0也是true。
a and b -- 如果a为false,则返回a,否则返回b
a or b --如果a为true,则返回a,否则返回b
> print(1 and 2)
2
> print(nil and 1)
nil
> print(1 or 2)
1
> print(false or 1)
1
例:
x = x or v
等价于:
if not x then
x = v
end
C语言中的三元运算符
a ? b:c
在Lua中可以这样实现:
(a and b) or c
not 结果只返回false或者true
> print(not 0)
false
3.连接运算符
.. --两个点
字符串连接,如果操作数为数字,Lua将数字转成字符串
> print("Hello " .. "World")
Hello World
> print(0 .. 1)
01