我正在嘗試使用 foldRight 和 foldLeft 方法計算串列中的元素數,而 foldLeft 給了我一個正確的計數 foldRight 沒有。我的代碼哪里錯了?
def count(arr:List[Int]):Int = {
arr.foldRight(0)((B,_) => B 1)
//arr.foldLeft(0)((B,_) => B 1)
}
val countElements = count(1::2::3::4::Nil)
println(countElements)
上面的代碼為 foldRight 回傳 2,為 foldLeft 回傳 4。
uj5u.com熱心網友回復:
您已經交換了引數,foldRight因為使用 fold right 元組引數是相反的,所以您丟棄了累加器,而是將 1 添加到最后一個元素(使用 foldRight 是輸入中的第一個元素)所以結束結果為 2(第一個元素 1,加 1)
如果你交換這些論點,即arr.foldRight(0)((_,B) => B 1)
你得到 4 的預期結果
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/440229.html
標籤:斯卡拉
