你能解釋一下爲什麼第一個定義與下一個定義相比是錯誤的?斯卡拉折左找到倒數第二個元素
爲什麼寫
((r._2,c))._1
會取我倒數第二個元素?請給我一個跟蹤如何在
(r,c)
或其意義插入元素。
下面是代碼:
scala> def penpen [A] (list:List[A]):A = {
list.foldLeft((list.head, list.tail.head))((r, c) => (r,c))._1
}
8: error: type mismatch;
found : r.type (with underlying type (A, A))
required: A
list.foldLeft((list.head, list.tail.head))((r, c) => (r,c))._1
^
scala> def penpen [A] (list:List[A]):A = {
list.foldLeft((list.head, list.tail.head))((r, c) =>(r._2,c))._1
}
penpen: [A](list: List[A])A
正如你應該是一個開發商能夠將問題分解成更小的部分以瞭解它的工作原理。你應該也能夠調試它。如果你不明白'A'和'(A,A)'之間的區別,請首先了解它。看看'foldLeft'簽名,隨處放入println並按照類型輸入... –