函式式程式設計基礎 高階函式和偏函式

2022-07-23 14:15:33 字數 1116 閱讀 3142

一、高階函式

所謂高階函式是指可一把函式作為引數,或者是可以將函式作為返回值的函式(我們見得閉包函式就是高階函式)。

function

foo(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...