我發現在Scala編譯器警告對象幾個問題:如何真正解決這個後綴行動問題
postfix operator xxx should be enabled by making the implicit value scala.language.postfixOps visible. This can be achieved by adding the import clause 'import scala.language.postfixOps' or by setting the compiler option -language:postfixOps. See the Scala docs for value scala.language.postfixOps for a discussion why the feature should be explicitly enabled.
這裏給出了這樣的警告顯示了一個例子:
val m1 = List(1->"a",2->"b") toMap
無當我第一次遇到這個問題時,真的回答了我想知道的內容:如何解決這個問題沒有涉及導入或編譯器選項。我的第一個想法是:如果它不喜歡postfix操作,那麼通過用點替換空格,使方法/ op調用顯式。例如:
val m1 = List(1->"a",2->"b").toMap
不幸的是,當我第一次嘗試的修復,那我正好在當時是工作的代碼看起來是這樣的:
val m2 = List(1->"a",2->"b") map {case (k,v) => (k.toString,v)} toMap
當我加了點,這導致了另一個不起眼的編譯器錯誤:
val m2 = List(1->"a",2->"b") map {case (k,v) => (k.toString,v)}.toMap
missing parameter type for expanded function The argument types of an anonymous function must be fully known. (SLS 8.5) Expected type was: ?
這關係到k和v標識符。
那時候,我剛剛放棄並添加了導入語句,一切都很順利。然而,最近一位學生問我這個問題,我想我最好回去調查一下。看到我對這個問題的回答,現在我認爲這個問題很明顯。但是我希望能夠挽救一些其他人花時間去研究這個問題的所有其他討論。
確實,這也可以。也許它稍微更優雅。 – Phasmid