この問題の解決策が明白すぎる場合、または以前にこのフォーラムで既に解決されている場合はご容赦ください (その場合は、その投稿を教えてください)。
クラスがあります
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;
}
}
}
このフォーラムで提供されている次の解決策。
ここで、セット内の要素の数を特定の数に制限する特殊なセットを作成したいと考えています。したがって、次のような別のクラスを定義します。
import scala.collection.immutable.TreeSet;
import org.personal.exercises.LengthContentsPair.lengthContentsPairOrdering;
class FixedSizedSortedSet [LengthContentsPair] extends TreeSet [LengthContentsPair]
{ ..
}
私には、これが TreeSet をサブクラス化する正しい方法のように思えます。ただし、コンパイラは次のエラーをスローします。
(1) LengthContentsPair に暗黙の Ordering が定義されていません。
(2) コンストラクター TreeSet の引数が不十分: (暗黙の順序付け: Ordering[LengthContentsPair])scala.collection.immutable.TreeSet[LengthContentsPair]。値パラメーターの順序が指定されていません。
スコープ規則を間違って理解していませんか? とても簡単に感じますが、手がつけられません。