이 문제에 대한 해결책이 너무 분명하거나 이미이 포럼에서 이미 해결 된 경우 용서해주십시오 (이 경우 게시물로 나에게 알려주십시오) .암시 적 개념의 틈새 컬렉션을 만드는 데 사용 된 유형의 순서 지정
I 따라서, 클래스가
org.personal.exercises.LengthContentsPair (l: Int, c: String)
{
val length = l
val contents = c
}
그런 다음, 같은 소스 파일에, 나는 또한 방법이 유형의 이 주문하는 객체를 정의하는 암시 적 값을 정의 있습니다
object LengthContentsPair {
implicit val lengthContentsPairOrdering = new Ordering [LengthContentsPair] {
def compare (a: LengthContentsPair, b: LengthContentsPair)= {
a.length compare b.length;
}
}
}
이 포럼에 제공된 솔루션을 따르십시오.
이제 Set의 요소 수를 주어진 숫자로 제한하는 특수 Set을 만들고 싶습니다. 그래서 저는 다음과 같은 별도의 클래스를 정의합니다 :
import scala.collection.immutable.TreeSet;
import org.personal.exercises.LengthContentsPair.lengthContentsPairOrdering;
class FixedSizedSortedSet [LengthContentsPair] extends TreeSet [LengthContentsPair]
{ ..
}
제게 이것은 TreeSet을 서브 클래스로 만드는 올바른 방법 인 것처럼 보입니다. 그러나 컴파일러에서 다음 오류가 발생합니다.
(1) No implicit Ordering defined for LengthContentsPair.
(2) not enough arguments for constructor TreeSet: (implicit ordering: Ordering[LengthContentsPair])scala.collection.immutable.TreeSet[LengthContentsPair]. Unspecified value parameter ordering.
범위 지정 규칙을 잘못 이해 했습니까? 그것은 내가 느낀 아주 쉬운 일이지만, 나는 그것에 손을 댄다.
어머나! 나는 그림자 효과에 대해 눈이 멀었다는 이유로 나 자신을 싫어한다. 내가 어떻게 그것을 놓칠 수 있고, 코드를 보는 데 적어도 1 시간을 쓸 수 있었다. 발견에 많은 감사드립니다. 그리고, 네, 내 소스 코드에서, LengthContentsPair는 실제로 'case class'입니다. 왜냐하면 내가 할 일이 많기 때문입니다. – Nirmalya