重写对象的==方法是否会改变数组include?方法的行为?
问题解答
是的,Ruby 数组的 include? 方法会基于你重写的 == 方法来判断对象是否存在于数组中。
具体来说,当执行 array_of_custom_objects.include?(new_custom_object) 时,Ruby 会遍历数组中的每一个 CustomObject 实例,逐个调用你重写的 == 方法,将当前数组元素和 new_custom_object 作为参数传入进行比较。只要数组中有任意一个元素通过该方法的比较返回 true,include? 就会返回 true;如果所有元素比较后都返回 false,则 include? 返回 false。
另外注意你代码里的笔误:self.y =! other.y 应该写成 self.y != other.y,否则会执行赋值操作而非比较逻辑。
内容的提问来源于stack exchange,提问作者Sheriff Hussain
相关产品推荐
相关产品推荐

