run_xiao 发表于 2013-2-4 22:59:27

比较对象

之前对Ruby中如何比较对象模棱两可,老想拿Java中的操作去套,发现很多时候行不通,今天花了点时间总算搞得比较清楚了

首先看看所有对象的父类Object包含的比较方法:      
===:类似于instanceof
=~:用于比较正则表达式,这两个都比较简单
而另外三个方法变化就比较多
==eql?   equal? 三个方法原本在Object中定义的作用是一样的,都用来判断是否为同一对象,看看Object的C代码(object.c)
    rb_define_method(rb_mKernel, "==", rb_obj_equal, 1);    rb_define_method(rb_mKernel, "equal?", rb_obj_equal, 1);    rb_define_method(rb_mKernel, "eql?", rb_obj_equal, 1);
定义的三个方法调用了同一个c方法。

然而在RDoc中还有这样的解释:
<div class="quote_title">引用
页: [1]
查看完整版本: 比较对象