一千萬個為什麽

搜索

如何在Scala中取消導出字符串“+”運算符?

我正在寫一個DSL,其中“+”運算符是嚴格數字的,就像其他一些流行語言一樣。它很接近,但String“+”運算符搞亂了我的隱式轉換。 unmporting String類的運算符的語法是什麽?

為了更清楚,而不是這個:

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

我想得到x:Int = 5

我想我只需要做兩件事就可以了:

  • 從Strings
  • 中刪除(在我的範圍內不加註意)“+”的定義
  • 定義String到Int
  • 的隱式轉換

我堅持第一步。

謝謝

最佳答案

根據 Scala規範的第12.3.1節, String 的> + 方法由編譯器進行特殊處理。我不確定,但我認為這意味著你不能“不安排”它,這是一種恥辱,因為它確實打破了類型系統(很像相關的 toString 方法)。

Could you use a different name for the operator in your DSL, eg, ++ or &?

轉載註明原文: 如何在Scala中取消導出字符串“+”運算符?