Я пишу DSL, где "+" оператор является строго числовым, как некоторые другие популярные языки. Это близко, но Строка "+" оператор портит мои неявные преобразования. Каков синтаксис для неимпорта оператора Строкового класса?
Только быть более ясным, вместо этого:
scala> var x = "2" + 3; x: java.lang.String = 23
Я хотел бы получить x: Интервал = 5
Я предполагаю, что мне просто нужны 2 вещи заставить это произойти:
Я застреваю на первом шаге.
Спасибо
Согласно разделу 12.3.1 спецификации Scala , метод +
для String
имеет особую обработку компилятором. Я не знаю точно, но я думаю, что это означает, что вы не можете «отменить импорт», что очень досадно, потому что это действительно нарушает систему типов (во многом как связанный метод toString
).
Не могли бы вы использовать другое имя для оператора в своем DSL, например, ++
или &
?
Метод + для строки является методом класса String (и, следовательно, для каждого строкового объекта), и как таковой его нельзя не импортировать.