У меня есть этот сегмент кода Scala, который определяет порядок и применяет его к TreeSet. Эта часть компилируется нормально.
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
.
Что я делаю не так? Нужно ли где-то явно определять неявную функцию?