4
나는 eql?
와 루비의 ==
의 차이점에 대해 읽어 봤는데, 나는 eql?
는 루비 문서에 따르면 가치와 유형ruby typical eql? 및 == 구현
을 비교하면서 ==
이 값을 비교 이해 :
Object 클래스의 객체의 경우? ==와 동의어입니다. 서브 클래스는 일반적으로이 전통을 계속하지만 예외가 있습니다.
문서에 지정된 동작이 자동으로 상속되는 것처럼 보이지 않지만 이러한 방법을 구현하는 방법에 대한 제안 일뿐입니다. 또한 ==
또는 eql?
중 하나를 재정의하는 경우 두 가지를 모두 재정의해야 함을 의미합니까? 아래의 클래스 Person
에서
eql?
및
==
을 overridding의 전형적인 방법입니다 곳으로 덜 제한
==
위양 더 제한적인
eql?
(
==
만에 구현 된 경우가
==
-
eql?
대표가 거꾸로 보인다 값이 아닌 유형을 비교).
class Person
def initialize(name)
@name = name
end
def eql?(other)
other.instance_of?(self.class) && @name == other.name
end
def ==(other)
self.eql?(other)
end
protected
attr_reader :name
end
동일하지 않습니까? 재정의해서는 안되니? 이 문서는 Numeric이 == 및 eql을 구현하는 방법에 대한 구체적인 예를 제공합니다. 다르게 –
당신 맞습니까? 덮어 써서는 안되는 것입니다. 나는 나의 대답을 업데이트했다. –
@Vincent, if == 및 eql? 동의어이기 때문에 우선 순위를 우선하는 것이 둘 다 같은 행동을 일으킬 것이라고 생각합니다. 나는 eql을 재정의하려고 시도 했는가? 그리고 ==, 그리고 난 ==하지 eql을 무시하려고했는데?, 그리고 행동은 동일하지 않습니다, 그래서 나는 그들이 동의어 문서에 의해 혼란스러워. –