2017-07-08 13 views
1

說我有這個功能:

val f = (x: Int) => x + x 

現在,我可以重寫這個表達

val f = (_: Int) + x$1 

這編譯因爲_擴張到x $ 1,x $ 2,...內部,但使用x $ n來引用下劃線參數是否合法? Scala語言規範6.23對這個「新標識符」沒有說明任何規則,所以應該避免這樣做?

+1

取決於你的意思是「合法」。在我的書中,如果scala規範沒有提到它,那麼scala就沒有合法性。 – Dima

+0

思考:在$'不是有效的標識符字符的平臺上會發生什麼? –

回答

3

不,它不是「合法的」。

  1. 「新標識符」的命名可能隨時更改,恕不另行通知。
  2. 這幾乎肯定是編譯器選擇出現在作用域中的「新標識符」的錯誤。
  3. 這不會以任何方式提高代碼的可讀性或可維護性,並可能會使讀者感到困惑。

很難想象一個理由,你實際上想要做到這一點。