Ruby中对象的相等性比较
2010-06-08 23:36
260 查看
1、equal?
equal?由Object定义,用于比较两个对象引用的相等性。
2、==
大多数类重新定义了了此操作符,它用于比较对象的内容是否相等。(!=定义了其相反的操作)
3、eql?
严格意义上的相等,即不允许自动类型转化。
4、===
条件相等,用于测试case语句的某个值是否和when语句中的值相同。在Object中定义
一个===,其实他是调用的==方法,
<1>在Range中重新定义了===,用于判断某个值是否在一个范围中。
<2>在Regexp 中重新定义了 === ,用于测试某个表达式是否匹配Regexp。
<3>在Class类中也重新定义了===方法,用于测试某个实例是否属于此类。
5、注意
Java程序员请注意,在ruby中==和equal和Java中的正好相反。
equal?由Object定义,用于比较两个对象引用的相等性。
# #s1 和 s2 是两个不同对象的引用 # s1 = "King" s2 = "King" puts s1.equal?(s2) #false puts "s1 object_id:#{s1.object_id}/n s2 object_id:#{s2.object_id}"
2、==
大多数类重新定义了了此操作符,它用于比较对象的内容是否相等。(!=定义了其相反的操作)
# #s1 和 s2 是两个不同对象的引用 # s1 = "King" s2 = "King" puts s1.equal?(s2) #false puts s1 == s2 #ture puts 1 == 1.0 #true puts "s1 object_id:#{s1.object_id}/n s2 object_id:#{s2.object_id}"
3、eql?
严格意义上的相等,即不允许自动类型转化。
puts 1.eql? 1.0 #false puts 1 == 1.0 #true
4、===
条件相等,用于测试case语句的某个值是否和when语句中的值相同。在Object中定义
一个===,其实他是调用的==方法,
<1>在Range中重新定义了===,用于判断某个值是否在一个范围中。
r = (1..6) puts r === 3 #true
<2>在Regexp 中重新定义了 === ,用于测试某个表达式是否匹配Regexp。
r = //d+/ puts r === "3" #true
<3>在Class类中也重新定义了===方法,用于测试某个实例是否属于此类。
puts String === "King" #true
5、注意
Java程序员请注意,在ruby中==和equal和Java中的正好相反。
相关文章推荐
- Scala对象的相等性比较
- 比较C#中的委托和Ruby中的block对象
- ruby 对象的比较总结
- C#高级编程三十九天----比较对象的相等性
- ruby_对象的比较_等于号_3个等于号_equal_eql
- C#编程(三十九)----------比较对象的相等性
- Ruby里面的某个对象与hash做属于比较
- 对象Equals相等性比较的通用实
- C#比较对象的相等性
- ruby 对象的比较总结
- ruby_对象的比较_等于号_3个等于号_equal_eql
- 一起学习《C#高级编程》2--比较对象的相等性
- C#比较对象的相等性
- 对象Equals相等性比较的通用实现
- C#高级编程--比较对象的相等性
- C#对象的比较
- 互斥对象锁和临界区锁性能比较
- 对象的比较与排序:IComparable和IComparer接口
- 面向对象与面向过程的比较
- java对象比较排序