<!-- first -->
<script>
var total = 0;
var newAccumulator = function()
{
return function(i) { total += i; };
}
var foldl = function(arr, putNum)
{
for (var i = 0; i < arr.length; ++i)
{
putNum(arr[i]);
}
}
foldl([1, 2, 3, 4], newAccumulator());
document.write("Sum: " + total + "<br/>");
</script>
<!-- second -->
<script>
var total = 0;
var newAccumulator = function(i)
{
total += i;
}
var foldl = function(arr, putNum)
{
for (var i = 0; i < arr.length; ++i)
{
putNum(arr[i]);
}
}
foldl([1, 2, 3, 4], newAccumulator());
document.write("Sum: " + total + "<br/>");
</script>
0
A
回答
2
在調用foldl
你叫newAccumulator
功能:
foldl([1, 2, 3, 4], newAccumulator());
在第一種情況下,它返回不求和函數up:
return function(i) { total += i; };
在第二種情況下,對newAccumulator
的調用不返回任何內容,所以foldl
沒有可調用的函數來計算總和。
您應該直接傳遞到newAccummulator foldl
,而不是它的值(不)回報:
foldl([1, 2, 3, 4], newAccumulator);
3
它想你想
foldl([1, 2, 3, 4], newAccumulator);
您是在fold1函數執行newAccumulator第二呼叫
2
。通過newAccumulator而不是newAccumulator();
老
foldl([1, 2, 3, 4], newAccumulator());
新
foldl([1, 2, 3, 4], newAccumulator);
1
第二不起作用,因爲你不及格與foldl的功能。
在第一個示例中,您執行newAccumulator,並且newAccumulator返回傳遞給foldl的函數... Foldl使用該函數對數字進行求和。
在第二個示例中,您執行newAccumulator並傳遞結果,但newAccumulator的結果不是函數。
此外,您命名爲foldl的函數通常稱爲「foreach」。如果你將結果存儲在一個數組中,它可能被稱爲'map'。 Foldl通常會通過增加總數並返回新總數的函數累積總數。
相關問題
- 1. 交易範圍不適用於第二筆交易?對於第一筆交易
- 2. 找到第一筆交易
- 3. 代碼筆項目第一次
- 4. 爲什麼第一次編譯,但第二個沒有
- 5. SQL獲取第二筆記錄
- 6. 在第二視圖加載筆尖
- 7. paypal subcription:我可以使第一筆付款不同嗎?
- 8. 爲什麼在Jupyter筆記本中沒有「另存爲」選項?
- 9. Windows.UI.Xaml.Media ==>沒有畫筆
- 10. 如何爲每個承諾做出第一筆付款,在該輸出行上顯示「第一付款」
- 11. 這是爲什麼這個工作第一次罰款,但不是第二次?
- 12. 隱藏子報告第一筆記錄
- 13. MDX獲得第一筆銷售額
- 14. SQL每天的第一筆交易
- 15. 爲什麼我第一次收到第二個請求?沒有任何價值
- 16. 是什麼第一和第二書面
- 17. 從筆尖第二次加載UIViewController爲UIImageView弄髒了框架
- 18. Play&Ebean - 獲得第一筆記錄
- 19. 開始第二項活動,而不是第一款Android
- 20. 爲什麼叫第二次
- 21. 沒有筆尖
- 22. DAX公式計算第一筆交易和第一筆交易之間的日期+(第一筆交易+ 6個月)
- 23. 爲什麼第二行中的第一個框不在第二行?
- 24. 爲什麼筆尖都在一個UITableView
- 25. 爲什麼第二個數組比第一個少一個?
- 26. 爲什麼第一次運行.net代碼=>它會比第二次慢呢?
- 27. 澄清什麼意思筆者(Python入門第5版)
- 28. 爲什麼第二個'cin >>'不會被處理?
- 29. 如何從某些筆記本筆記Evernote的Javascript API第
- 30. setBackground不適用於第一次,但第二次,爲什麼?