Я хотел бы добавить неявный параметр в класс с частным конструктором. Вот как упрощенный пример:
class A[T] private(a:Int){
def this()=this(0)
}
Если бы я хотел применить шаблон Pimp my library к T с помощью Ordered[T], мне нужно было бы использовать (устаревшее) представление, связанное следующим образом:
class A[T <% Ordered[T]] private(a:Int){
def this()=this(0)
}
И это работает. Однако, чтобы избежать устаревшего синтаксического сахара, я хотел бы передать неявный параметр классу. К сожалению, здесь я, вероятно, делаю что-то не так:
class A[T] private(a:Int)(implicit conv:T=>Ordered[T]){
def this()=this(0)
}
Для приведенного выше кода компилятор выдает следующую ошибку:
error: No implicit view available from T => Ordered[T].
def this()=this(0)
Хотя, если я попытаюсь передать неявный параметр напрямую, вот так:
class A[T] private(a:Int)(implicit conv:T=>Ordered[T]){
def this()=this(0)(conv)
}
Я получаю это:
error: not found: value conv
def this()=this(0)(conv)
Как передать неявный параметр в этом случае?
РЕДАКТИРОВАТЬ: после некоторых экспериментов кажется, что переопределение конструктора с неявным параметром является проблемой. Не факт, что конструктор приватный.