經過大量的Java和一些Haskell,我想看看Scala。從下面的代碼中,我得到這個錯誤信息斯卡拉列表錯誤
type mismatch; found : List[Nothing] => Option[Nothing] required: List[Int] => Option[Nothing]
我不知道我做錯了什麼:
object MyFirstScalaObject {
def main(args: Array[String]) {
lazy val testValues:List[List[Int]] = List((1 to 10).toList, null, List());
println( testFunction(last, testValues));
}
def testFunction[I, O](f : I => O, inputs : List[I]):
List[(I, O)] =
inputs.zip(inputs.map(f));
def last[A](xs:List[A]):Option[A] = xs match {
case x::Nil => Some(x);
case _::xs => last(xs);
case _ => None;
}
}
感謝您的任何意見。
乾杯,
你可以將'testFunction'定義爲'testFunction [I,O](inputs:List [I])(f:I => O)',並將其用作'testFunction(testValues)(last)'。 – senia
senia,我認爲你應該把它變成一個答案,而OP應該讓IMHO接受它。 – Blaisorblade
@Blaisorblade:我已經發布它作爲答案。但它是「如何」,而不是「爲什麼」。 – senia