首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

Ruby中的相等:==,===,eql?equal?<=>

2012-09-03 
Ruby中的相等:,,eql?,equal?,,,eql?,equal? 都有些啥区别???Equality (, eql?, equal?)??

Ruby中的相等:==,===,eql?,equal?,<=>

==,===,eql?,equal? 都有些啥区别

?

?

?

Equality (==, eql?, equal?)

?

?

== ?普通的相等,不对object_id是否相等进行检查

eql? 和 == ?是相同的, equal?则是要对object_id是否相等进行检查

?

“test” == "test" ?#=> return true,因为两者的值相等

“test"equal?("test") #=> return false ?因为两者的值虽然相等,但两者的object_id不相等

?

?

Case Equlity ===

?

当使用‘case’ statement的时候,在ruby内部,会调用===方法

?

在case statement 外部使用的时候, Tripple Equal有两种不同的情况

如果是类来调用===方法,那么,就会比较另一个对象是否为当前类的实例

如果是对象调用===方法,那么,和==用法相同

?

?

?

?

在Ruby on Rails中, the?Range?class overrides “===” method to returns true if the compared value is found in the in the range values.

?

?

1..10 === 1    # returns true1..10 === 11   # returns falsecase var   when 1..10       "do some stuff here"   when 11..20       "do something else here"   else       "out of range"end

?

?

Source

?

?

补充:

<=>

Comparison—Returns an integer (-1, 0, or +1) if this array is less than, equal to, or greater thanother_ary. Each object in each array is compared (using <=>). If any value isn’t equal, then that inequality is the return value.

返回第一个不相等的元素的比较结果

?

热点排行