Я пишу DSL, где оператор «+» строго числовой, как и в некоторых других популярных языках. Это близко, но оператор String "+" портит мои неявные преобразования. Какой синтаксис отменяет импорт оператора класса String?
Для большей ясности вместо этого:
scala> var x = "2" + 3; x: java.lang.String = 23
Я бы хотел получить x: Int = 5
Думаю, для этого мне нужны всего две вещи:
- Удалите (не импортируйте в мою область) определение "+" из строк
- Определите неявное преобразование String в Int
Я застрял на первом шаге.
Спасибо
any2stringadd
используется там, где левая часть не поддерживает оператор+
, но правая часть представляет собой строку. (Чтобы увидеть это в действии, запуститеscala -Xprint:typer
и выполнитеnew Object + "ZZZZZ"
) Напротив,"ZZZZZ" + new Object
может использовать оператор +, который уже определен вString
, поэтомуany2stringadd
не используется. - person Ken Bloom   schedule 19.04.2010