一、高階函式
所謂高階函式是指可一把函式作為引數,或者是可以將函式作為返回值的函式(我們見得閉包函式就是高階函式)。
functionfoo(x)
}
對於程式的編寫,高階函式比普通函式要靈活的多,除了通常意義的函式呼叫返回外,還形成了一種後續傳遞風格的結果接收方式,而非單一的返回值形式,後續傳遞風格的程式編寫將函式的業務重點從返回值轉移到了**函式中:
function(x,bar)
以上的**為例,對於相同的foo()函式,傳入的bar的引數不同,則可以得到不同的結果。結合node提供的最基本的事件模組可以看到,事件的處理方式就是基於高階函式的特性來完成的。
高階函式在js中的應用比比皆是,其中ecmascript5中提供的一些陣列方法就是典型的高階函式,比如:foreach()、map()、reduce()、reduceright()、filter()、every()、some()等。
二、偏函式
偏函式用法是指建立乙個呼叫另乙個部分——引數或變數已經預置的的函式——的函式的用法。(好拗口,我也不懂),先看看例子。
普通方法:var tostring=object.prototype.tostring;
var isstring=function
(obj);
var isfunction=function
(obj);
..........
偏函式方法:
var istype=function
(type)
}
上面的例子中,用偏函式方法去除了冗餘**,解決了重複定義的問題。這種通過指定部分引數來產生乙個新制定的函式的形式就是偏函式。
偏函式應用在非同步程式設計中也十分常見,著名的類庫underscore提供的after()方法既是偏函式應用,其定義如下:
_.after=function(times,func);
} }
這個函式可以根據傳入的times引數和具體的方法,生成乙個需要呼叫多次才能真正執行實際函式的函式。
函式式程式設計 高階函式之偏函式
偏函式 functools.partial的作用就是,把乙個函式的某些引數給固定住 也就是設定預設值 返回乙個新的函式,呼叫這個新函式會更簡單。import functools int2 functools.partial int,base 2 python的functools模組提供了很多有用的功...
python函式式程式設計 高階函式 偏函式
三大特性 immutable data不可變資料 first class functions函式像變數一樣使用 尾遞迴優化 每次遞迴都重用stack 好處 parallelization並行 lazy evaluation惰性求值 determinism 確定性 函式式程式設計 map reduce...
函式式程式設計 偏函式
如下 coding utf 8 print int 12345 print int 12345 base 8 print int 12345 16 def int2 x,base 2 return int x,base print int2 1000000 print int2 1010101 im...