我正在寫一個DSL,其中「+」運算符是嚴格數字的,就像其他一些流行的語言一樣。它很接近,但String「+」運算符正在搞亂我的隱式轉換。什麼是取消導入String類的運算符的語法?如何在Scala中導入String「+」運算符?
只是爲了更加明確,而不是這樣的:
scala> var x = "2" + 3; x: java.lang.String = 23
我想獲得X:INT = 5
我想我只需要兩件事情要做到這一點:
- 拆下(我的範圍之內unimport)的「+」從字符串定義
- 定義字符串的一個隱式轉換爲Int
我卡上的第一步。
由於
我想,「進口scala.Predef {any2stringadd => _}。」會的工作。 但它沒有。必須有我錯過的東西。 – Eastsun 2010-04-19 04:26:58
'any2stringadd'用於左側不支持'+'運算符的地方,但右側是一個字符串。 (要看到這一點,運行'scala -Xprint:typer'並執行'new Object +「ZZZZZ」'')相比之下,''ZZZZZ'+ new Object'可以使用'String'上已經定義的+運算符,所以'any2stringadd'沒有被使用。 – 2010-04-19 14:17:04