這是我的當前代碼的示例:erlang是否在列表中有一個隱藏的rownum?
DataSet = [1,2,3,4,5,6,7,8,9].
Sequence = [3,4,5,6].
ReducedDataSet = lists:foldl(fun(SeqNumber, Output) ->
Row = lists:nth(SeqNumber, DataSet),
[Row|Output]
end,
[],
Sequence
).
ReducedDataSet最終成爲[6,5,4,3],如果我它更改爲列表:foldr相似,ReducedDataSet將是[3,4,5 ,6]。
我沒想到這是當其被吸收從左到右,第3個值是3,應繼續執行6,但是當吸收從右到左,第3個值是7,並繼續到4
這是否意味着我的列表中有一個隱藏的行號,foldl和foldr僅在最終列表的排序順序上有所不同?
認爲這回答我的問題,我問它最好。另一個答案是關於fold的快速提醒,但正如我自己意識到的,答案是要記住它是列表:第n個是確定列表中的位置。 – Philbo
我也不是我們如何編寫多行函數的粉絲 - 我上面的寫法只反映了我們目前的工作方式。將你的鏈接發送給我的高級,看看它是否比我設法更有說服力。 – Philbo
@Philbo並非所有人都同意我的觀點,即瓦解事物是一個好主意。我發現通常命名好的函數比內聯的函數更容易處理(並在其他地方找到),幾乎在所有情況下,爲更大函數內的匿名函數分配一個有意義的標籤幾乎總是一個可讀性勝利。然而,隨着時間的推移,這些可讀性會增加*特別是當您返回重新編寫一些舊代碼時。至於一般風格,我根據可用的灰鬍子建議爲此寫了一個示例項目:https://github.com/zxq9/zuuid – zxq9