Я довольно новичок в Scala (2.8) и вот что я пытаюсь выразить в Scala:
Мне нужно определить класс, который (из-за совместимости с библиотекой Java) реализует Comparable;его универсальный тип должен быть Comparable с самим собой или суперклассом
Мне также нужно иметь конструктор без аргументов вместе с другим, который использует универсальный параметр
Я написал простой эквивалентчто я пытаюсь получить в Java:
public class MyComparable<T extends Comparable<? super T>>{
public MyComparable() {}
public MyComparable(T a){
System.out.println(a);
}
}
Я могу без проблем импортировать этот класс в REPL Scala и создать его экземпляр.
Это то, что я пишу в Scalaчтобы попытаться выполнить одно и то же:
import java.lang.Comparable
class MyComparable[T <: Comparable[_>:Tb],Tb]()(implicit ev: T=:=Tb) {
def this(a: T) = {
this()
println(a)
}
}
Я пробовал оба, используя конструктор no-args в качестве по умолчанию, или используя конструктор с аргументом T: в обоих случаях я получаю error: could not find implicit value for parameter ev: =:=[T,Tb]
встрока 5
Afaik, =: = импортируется по умолчанию из scala.Predef (и фактически этот код работает нормально только с одним конструктором)