Я думаю, что проще объяснить это на простом примере. (помощь в перефразировании заголовка приветствуется; -)
Я хотел бы реализовать метод в квадрате
и, используя неявный 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 }
Я хотел бы знать, как я могу применить это к любому числовому классу или, что еще лучше, к любому класс, поддерживающий *
-оператор.