5
考慮下面的Scala代碼:爲什麼Scala爲Short和Byte類型定義了一個「+ =」運算符?
var short: Short = 0
short += 1 // error: type mismatch
short += short // error: type mismatch
short += 1.toByte // error: type mismatch
我不質疑潛在的打字 - 很明顯,「短+值==詮釋」。
我的問題是:
1.是否有任何方法可以使用操作員?
2.如果沒有,那麼爲什麼操作員可以使用Short & Byte?
[通過擴展* =,| = & =,等]
實際上,Short沒有方法「+ =」或「* =」,您可以查看Short http://www.scala-lang.org/api/current/index.html#scala的文檔。短。 x someoperator = y由編譯器自動轉換爲x = x someoperator y。 – Eastsun
@Eastsun但是Int :-)'a op = b'也不是擴展形式的語法糖:'a = a op b',它解釋了類型錯誤(Short + Short - > Int)。它並沒有解釋爲什麼做出這個決定,或者這個構想可能 - 或者不可能 - 有什麼用處。 (在C#中,執行'byte + = 1'而不是'byte = byte + 1'是完全合法的,並且行爲在標準中是特定的 - 在C#中隱式轉換回LHS類型)。 – 2012-06-11 06:28:15
@pst是的,你可以在Java中做和C#一樣的事情(如果我沒有記錯的話) – Eastsun