2009-08-04 2 views
4

Ordered에서 믹싱하고 here과 같이 compare() 함수를 제공하면 객체를 정렬하는 것이 훨씬 간단합니다. 그러나 정렬 값이 Int 대신 Double이되면 어떻게 될까요? x는 더블 컴파일러 오류로 이어질 것입니다Double 값을 기준으로 개체를 정렬 하시겠습니까?

def compare(that: MyClass) = this.x - that.x

: "형식이 일치, 발견 : 더블이 필요합니다 : 지능"

대신의 int로 캐스팅의 비교를 위해 두 배를 사용하는 방법이 있나요?

+1

이 관용구는 오버플로에서 잘못된 결과를 생성하므로 정수 유형의 경우에도 손상됩니다. – starblue

답변

8

가장 간단한 방법은 (이에 Double가 암시 적으로 변환됩니다) RichDoublecompare 구현에 위임하는 것입니다

def compare(that : MyClass) = x.compare(that.x) 

이 방법의 장점은 모든 기본 형식에 대해 동일한 방식으로 작동한다는 것입니다.