順序を定義してTreeSetに適用するScalaコードのこのセグメントがあります。この部分は正常にコンパイルされます。
val acctOrdering = new Ordering[Account] {
def compare(acc1: Account, acc2: Account) {
// code to compare based on various criteria
}
}
private var accountSet = new TreeSet[Account]()(acctOrdering)
コードの他の場所で、以前の順序に基づいて、セットの最初の要素を取得したい(そして、最初の要素が必要なものを生成しない場合は、後で後続の要素を取得したい)。指定。次のように動作すると思いましたが、コンパイルされませんでした。
val firstAccount = accountSet.min
エラーは"could not find implicit value for parameter cmp: Ordering[Account]"
ただし、最小値を要求するときに順序付けオブジェクトを再度指定すると、次のようにコンパイルされます。
val firstAccount = accountSet.min(acctOrdering)
構築時に指定した順序が自動的に使用され、セットに追加するときに段階的に並べ替えられると思ったので、を呼び出すときに順序を再度指定する必要はありませんmin
。
私は何が間違っているのですか?どこかで陰関数を明示的に定義する必要がありますか?