Scala - Generics + неявное преобразование - PullRequest
2 голосов
/ 10 июня 2011

Я написал этот метод

def compare[U, T <: Comparable[U]](a: T, b: U) = a.compareTo(b)

Он работает со String и Integer, но не с Int или RichInt.Так почему же не Int автоматически преобразуются в Integer

1 Ответ

4 голосов
/ 10 июня 2011

Использование простой привязки к контексту потребует от компилятора неявного преобразования до того, как преобразованное значение будет передано методу. Я верю, что вы хотите вот что:

def compare[U, T <% Comparable[U]](a: T, b: U) = a.compareTo(b)

Здесь неявное перенос 'a' будет происходить внутри реализации метода, поэтому вы сможете получить то, что вы хотите. Я не совсем понимаю, какое использование вам не помогло - вы должны попытаться включить примеры того, что не работает, чтобы мы могли быть уверены, когда попытаемся ответить!

...