Я пытаюсь перевести следующий код Java:
import java.util.Comparator;
public class ComparatorTestJava {
public static void test() {
Comparator<String> cmp = (s1, s2) -> 0;
cmp = cmp.thenComparing(s -> s);
}
}
в Scala.Я думаю, что это должно работать:
import java.util.{Comparator, function}
object ComparatorTest {
var comparator: Comparator[String] = (t1, t2) ⇒ 0
comparator = comparator.thenComparing(new function.Function[String, String] {
override def apply(t: String): String = t
})
}
Но это не удается из-за следующей ошибки:
Error:(7, 41) type mismatch;
found : java.util.function.Function[String,String]
required: java.util.Comparator[? >: String]
comparator = comparator.thenComparing(new function.Function[String, String] {
Похоже, компилятор Scala убежден, что я пытаюсь использовать вместо него thenComparing(Comparator)
thenComparing(Function)
.Могу ли я сказать, что это?Или это на самом деле не проблема?
(я понимаю, что есть другие, возможно, более идиоматические, способы построения компаратора в Scala, но мне интересно понять, почему это не получается.)