LUA教程表达式关系运算符-9

Lua 中的比较操作符有

 ==    ~=    <     >     <=    >=

这些操作符返回结果为false或者true;==和~=比较两个值,如果两个值类型不同,Lua认为两者不同;nil只和自己相等。Lua通过引用比较tables、userdata、functions。也就是说当且仅当两者表示同一个对象时相等。

a = {}; a.x = 1; a.y = 0
b = {}; b.x = 1; b.y = 0
c = a
a==c but a~=b

Lua比较数字按传统的数字大小进行,比较字符串按字母的顺序进行,但是字母顺序依赖于本地环境。

当比较不同类型的值的时候要特别注意:

"0" == 0       -- false
2 < 15         -- true
"2" < "15"     -- false (alphabetical order!)

为了避免不一致的结果,混合比较数字和字符串,Lua会报错,比如:2 < "15"

等于操作 (==) 首先比较操作数的类型。如果类型不同,结果就是 false。否则,继续比较值。数字和字符串都用常规的方式比较。对象 (table ,userdata ,thread ,以及函数)以引用的形式比较:两个对象只有在它们指向同一个东西时才认为相等。每次你创建一个新对象(一个 table 或是 userdata ,thread 函数),它们都各不相同,即不同于上次创建的东西。

你可以改变 Lua 比较 table 和 userdata 的方式,这需要使用 "eq" 这个原方法
"0"==0 等于 false,而且 t[0] 和 t["0"] 描述的是 table 中不同的域。

操作符 ~= 完全等价于 (==) 操作的反值。

大小比较操作以以下方式进行。如果参数都是数字,那么就直接做数字比较。否则,如果参数都是字符串,就用字符串比较的方式进行。再则,Lua 就试着调用 "lt" 或是 "le" 元方法


发布日期:

所属分类: 编程 标签:


没有相关文章!