Scala: Можно ли указать универсальный класс, реализующий определенный метод

Я думаю, что проще объяснить это на простом примере. (помощь в перефразировании заголовка приветствуется; -)

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

С Int это очень просто:

class EnhancedInt(x: Int) { def squared = x * x }

implicit def IntToEnchancedInt(x: Int) = new EnhancedInt(x)

Но с Any или AnyVal я получаю следующую ошибку:

scala> class EnhanceAny(x: AnyVal) { def squared = x * x }
<console>:7: error: value * is not a member of AnyVal
       class EnhanceAny(x: AnyVal) { def squared = x * x }

Я хотел бы знать, как я могу применить это к любому числовому классу или, что еще лучше, к любому класс, поддерживающий * -оператор.

10
задан user unknown 15 January 2012 в 08:09
поделиться