2012-05-01 14 views

回答

4

沒有一個乾淨的方式使用核心庫,因爲他們現在要做的,但如果你滾你自己foldLeft再有就是

main() { 
    var sum = foldLeft([1,2,3], 0, (val, entry) => val + entry); 
    print(sum); 
} 

Dynamic foldLeft(Collection collection, Dynamic val, func) { 
    collection.forEach((entry) => val = func(val, entry)); 
    return val; 
} 

我跟鏢隊有關添加foldLft到核心集合,我希望它很快就會到來。

+0

這可以通過向Ruby中的集合接口添加註入函數來解決。 –

+1

這是一些非常漂亮的代碼,拉爾斯。不僅是我在尋找的東西,現在我明白了摺疊。 –

+1

只要在上面的foldLeft中內聯代碼,您當然可以使用匿名函數來執行此操作,無論是否使用任何庫代碼都可以。你幾乎總是需要一個變量,除非你對遞歸太過聰明。或者,你也可以使用for(var in in)而不是forEach來實現,並將函數應用於for循環體。要麼工作。 –

4

我仍然認爲明顯的方法是更清潔,更容易理解這個特定的問題。

num sum = 0; 
[1, 2, 3].forEach((num e){sum += e;}); 
print(sum); 

num sum = 0; 
for (num e in [1,2,3]) { 
    sum += e; 
} 
3
int sum = [1, 2, 3].fold(0, (previous, current) => previous + current); 

或較短的變量名,使其佔用的空間更小:

int sum = [1, 2, 3].fold(0, (p, c) => p + c); 
相關問題