2011-02-28 55 views
3

函數「過濾器」返回一個數組[0,4],但我不明白它是如何得到的。你能解釋一下「偏」嗎?它是內置函數嗎?我假設「op」將「>」運算符應用於數組中的數字。因此,由於5大於0,它將被添加到數組「result」中。但「部分」是如何工作的?Javascript過濾器部分運行

function filter(test, array) { 
    var result = []; 
    forEach(array, function (element) { 
    if (test(element)) 
     result.push(element); 
    }); 
    return result; 
} 

show(filter(partial(op[">"], 5), [0, 4, 8, 12])); 
+0

我想我明白了。 「部分」只是一個任意指定的名稱來應用「操作」功能? – mjmitche 2011-02-28 01:03:23

+1

http://ejohn.org/blog/partial-functions-in-javascript/ – 2011-02-28 01:08:35

+0

你的問題可能會遺漏一些東西 - 你在使用什麼框架或庫?如果沒有,你應該包含partial()的定義; – jonycheung 2011-03-11 21:48:01

回答

1

在這種情況下,部分採用2個輸入和一個值的函數。稱它們爲f(x,y)和a。它返回一個輸入g(z)的函數。當你調用g(b)時,它返回f(a,b)。因此它是部分應用。過濾器需要一個輸入的功能,而'<'是一個2輸入功能。

部分是一個函數,它接受一個函數並返回一個函數,該函數預先指定一個(或多個)輸入。