Как не импортировать Строку “+” оператор в Scala?

Я пишу DSL, где "+" оператор является строго числовым, как некоторые другие популярные языки. Это близко, но Строка "+" оператор портит мои неявные преобразования. Каков синтаксис для неимпорта оператора Строкового класса?

Только быть более ясным, вместо этого:

scala> var x = "2" + 3;
x: java.lang.String = 23

Я хотел бы получить x: Интервал = 5

Я предполагаю, что мне просто нужны 2 вещи заставить это произойти:

  • Удалите (неимпорт в моем объеме) определение "+" от Строк
  • Определите неявное преобразование Строки к Интервалу

Я застреваю на первом шаге.

Спасибо

13
задан Alex R 18 April 2010 в 23:13
поделиться

2 ответа

Согласно разделу 12.3.1 спецификации Scala , метод + для String имеет особую обработку компилятором. Я не знаю точно, но я думаю, что это означает, что вы не можете «отменить импорт», что очень досадно, потому что это действительно нарушает систему типов (во многом как связанный метод toString ).

Не могли бы вы использовать другое имя для оператора в своем DSL, например, ++ или & ?

9
ответ дан 2 December 2019 в 00:45
поделиться

Метод + для строки является методом класса String (и, следовательно, для каждого строкового объекта), и как таковой его нельзя не импортировать.

3
ответ дан 2 December 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: