Ruby里4种比较函数(equal?, eql?, ==, ===)详解
Ruby里面有4种比较方法,equal?在使用的时候也特别容易搞糊涂。这篇博文将演示一些代码来讲解各个方法。在特定类中觉得两个对象是否相同,需要看业务上的逻辑表象,所有由程序员覆盖该方法的定义,决定两个对象是否相同。比如 String 类,他是来计较实际的文字串是否相同,而不在意是否来自同一个内存区域。通常用在 case 比较调用该方法,比如等同于如果两个对象的值相同将返回 true,如果重新定义了子类的 == 方法,一般需要 alias 到 eql?当然也有例外,整数与小数的比较两个方法的返回值就不同。所以什么时候应该覆盖这个方法就看你想让他在 Hash 比较时如何表现。
用户评论