個人筆記,理解錯了也請原諒~
import { curry } from 'lodash';
var match = curry((reg, str) => str.match(reg));
var filter = curry((f, arr) => arr.filter(f));
var haveSpace = match(/\s+/g);
filter(haveSpace)(["abcdefg", "Hello World"])
lodash是一個函數(shù)式編程的庫
var match = curry((reg, str) => str.match(reg));
我們可以理解為
var match = function (reg) {
return function (str) {
return str.match(reg)
}
}
var filter = curry((f, arr) => arr.filter(f));
我們理解為:
var filter = function (f) {
return function (arr) {
return arr.filter(f)
}
}
var haveSpace = match(/\s+/g);
我們理解為:
function (str) {
return str.match(/\s+/g)
}
那么,現(xiàn)在我們再來理解一下:
filter(haveSpace)(["abcdefg", "Hello World"])
分開操作一下,先執(zhí)行 filter(haveSpace)
得到一個函數(shù),我們賦值給func1:
var func1 = function (arr) {
return arr.filter(haveSpace)
}
繼續(xù)執(zhí)行,不就是相當于:
arr = ["abcdefg", "Hello World"]
func1(arr)
func1(arr) 返回的不就是一個filter方法,我們給他傳進去一個函數(shù),如下
arr = ["abcdefg", "Hello World"]
haveSpace = function (str) {
return str.match(/\s+/g)
}
arr.filter(haveSpace)