1 == 1.0 # true
-
===
通常情况与==
相等,但在一些其它的情况下,也可以判断相等,比如:
在Range中===用于判断等号右边的对象是否包含于等号左边的Range;
正则表达式中用于判断一个字符串是否匹配模式,
Class定义===来判断一个对象是否为类的实例。
(1..10) === 5 # true: 5属于range 1..10
/\d+/ === "123" # true: 字符串匹配这个模式
String === "s" # true: "s" 是一个字符串类的实例
-
eql?
判断同时双方的值(value)和类型(type)是否相等
1.eql?(1.0) # false
-
equal?
判断对象的identity
是否相等,可以认为是否为同一个对象
s1 = "d"
s2 = "d"
s1.eql? s2 #true
s1.equal? s2 #false
s1.object_id #19839780
s2.object_id # 19839768
s3 = "d"
s4 = s3
s3.eql? s4 #true
s3.equal? s4 #true
s3.object_id # 19839576
s4.object_id # 19839576