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