关系操作符:
< > <= >= == ~=
两个值如果类型不同则认为是不相等的,如果两个值类型相同则进行相应的比较,字符串的话比较字母次序
当两个不同类型的值做比较时要注意 “0”和0是不等的,nil只和nil相等
print(d==nil)
print(nil==nil)
print(2<"15")会报错
a={}
b={}
c=a
print(a==b)
print(a==c)
对于table和函数的比较只有lua同一引用时才相等
三元运算符
a and b or c
and 和 or是短路求值,and 如果第一个值是false则 and结果直接返回false,or 如果第一个值是true则直接返回true
因此三元运算符成立的前提是b为true
a and b 如果 a为ture则and返回值b b为true 不在进行or比较 最终返回b
如果a为false 则 and返回 false 则在进行or比较时返回 c
lua中true和false判断时只有 false和nil 为 false 其他均为true 包括 0
not 0 为false
print(5>6 and 5 or 6)
for i=1,10 do
list={next=list,value=i}
end
local l=list
while l do
print(l.value)
l=l.next
end
table的构造式中,不能使用负数和运算符作为索引,但是可以提供了一种[]的方式
a={["+"],"-"}
并且可以使用;代替,