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