Lua 中的比较操作符有
== ~= < > <= >=
这些操作的结果不是 false 就是 true。
等于操作 (==
) 首先比较操作数的类型。
如果类型不同,结果就是 false。
否则,继续比较值。
数字和字符串都用常规的方式比较。
对象 (table ,userdata ,thread ,以及函数)以引用的形式比较:
两个对象只有在它们指向同一个东西时才认为相等。
每次你创建一个新对象(一个 table 或是 userdata ,thread 函数),
它们都各不相同,即不同于上次创建的东西。
你可以改变 Lua 比较 table 和 userdata 的方式,这需要使用 "eq" 这个原方法 (参见 §2.8)。
§2.2.1 中提及的转换规则并不作用于比较操作。
所以, "0"==0
等于 false,
而且 t[0]
和 t["0"]
描述的是 table 中不同的域。
操作符 ~=
完全等价于 (==
) 操作的反值。
大小比较操作以以下方式进行。 如果参数都是数字,那么就直接做数字比较。 否则,如果参数都是字符串,就用字符串比较的方式进行。 再则,Lua 就试着调用 "lt" 或是 "le" 元方法 (参见 §2.8)。