比较对象
之前对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]