2012-06-25 1 views
30

docs에 따르면 Array.include?== 개체 비교를 사용합니다. 나는 그러한 것들이 일반적으로 .equals()으로 끝난 자바에서왔다. 이것은 특정 객체에 대해 오버라이드하기 쉽다.Ruby에서 재정의 == 연산자

==을 Ruby에서 덮어 쓰면 어떻게 동작을 지정할 수 있습니까 Array.include? 내 특정 개체에 대한?

감사합니다. 루비 ==에서

답변

61

그냥 당신이 당신처럼 ==를 오버라이드 (override) (당신이 foo == bar 대신 foo.==(bar)를 작성할 수 있도록 상단에 몇 가지 구문 설탕)하는 방법입니다 다른 모든 방법

class MyClass 
    def ==(other_object) 
    # return true if self is equal to other_object, false otherwise 
    end 
end 
+3

환상적인, 감사합니다. 그것은 내가 예상했던 것보다 훨씬 더 간단했다. – lynks

+3

해시 및 eql을 덮어 쓸 필요가 있습니까? 행동 양식? – Vitalij

+0

@Vitalij eql? 일반적으로 ==에 대한 별칭이며, 해시 및 세트에서 사용하려는 경우 해시를 재정의해야합니다. – bluehallu