1
試圖編譯下面的函數在階2.11.0Scala的 - 與類型推斷麻煩lambda表達式
def dafuq(canvas: Array[Array[Boolean]]): Array[Array[Boolean]] = {
for (r <- canvas.reverse) yield r.zipWithIndex.map((c: Boolean, i: Int) => c)
}
產生
Solution.scala:6: error: type mismatch;
found : (Boolean, Int) => Boolean
required: ((Boolean, Int)) => ?
for (r <- canvas.reverse) yield r.zipWithIndex.map((c: Boolean, i: Int) => c)
^
功能是假的,但它示出了我有一個問題遇到。我對Scala很陌生,所以這可能是一個新手的錯誤,但我找不到解決方案或解釋這個問題。你知道是什麼原因導致上述行爲?
也是返回類型暗示可能的lambda表達式?
第二個片段使用模式匹配表達式來定義函數。它不是'部分功能';它是一個'Function1'(它不是部分的,因爲它是在整個域中定義的)。 [SLS](http://www.scala-lang.org/docu/files/ScalaReference.pdf)第8.5節指定根據上下文,模式匹配表達式可以解析爲「FunctionN」或「PartialFunction」。在這種情況下,由於'map'需要一個'Function1',就是這樣。 – 2014-11-24 23:30:29
你說得對,我要編輯答案。 :) – Dimitri 2014-11-24 23:37:46
我只知道這個,因爲其他人已經糾正了我的計算器之前,所以...繼續傳遞它:) – 2014-11-24 23:44:24