第一次接觸到“函數(shù)式編程”這個東西棍现,是在大學(xué)時自學(xué)iOS時淮椰,發(fā)現(xiàn)一個叫reactivecocoa的框架,這個框架蔫磨,人家叫他函數(shù)式響應(yīng)式編程框架淘讥。叫他函數(shù)式是因為他的確是按照函數(shù)式編程這一范式在oc上實現(xiàn)了一系列的接口。響應(yīng)式是因為他提供了一堆綁定的接口(bind)堤如,有點類似vue那種思想蒲列,數(shù)據(jù)驅(qū)動UI改變。所以在這種框架下mvvm自然就是最適合的架構(gòu)啦搀罢。
簡單的說說函數(shù)式編程
函數(shù)式編程是一個編程范式蝗岖,就是面向?qū)ο缶幊桃粯印J且环N范式榔至。都源自λ 演算抵赢,λ 演算實際上是抽象了函數(shù)的表達(dá),使得函數(shù)可以作為參數(shù)輸入,也可以作為返回值返回铅鲤。在函數(shù)式編程里面划提,函數(shù)是一等公民,我覺得reactivecocoa能得以出現(xiàn)彩匕,也是在iOS5之后腔剂,oc提供了block媒区,block實際上就類似函數(shù)驼仪。如果沒有block,reactivecocoa也搞不出來袜漩。
(TODO:想到什么寫什么)
Swift中的函數(shù)式編程
我個人是真的很喜歡Swift這個語言绪爸,因為寫起了很爽,有種覺得自己很geek的感覺哈哈宙攻。Swift雖然沒有oc的runtime提供那么強的動態(tài)特性奠货,但是正因為這樣,安全白颉递惋!能少很多莫名其妙的運行時crash。
在swift里面溢陪,函數(shù)就是個一等公民啦萍虽。
func swap(inouta: Int, b: inout Int){
a=a+b
b=a-b
a=a-b
}
var swapFun =swap
在Swift妥妥的沒問題好嗎,直接拿來用形真,做參數(shù)做返回值統(tǒng)統(tǒng)都可以杉编。
在函數(shù)式編程里,有個叫monad(單子)的概念咆霜。這實際上是一個邓馒。