卓同學(xué)的Rac練習(xí)題一

一、判斷題:
(1)函數(shù)式編程是面向?qū)ο缶幊痰纳?jí)產(chǎn)品

錯(cuò)。這是兩種完全不同的編程范式凶赁,沒有直接聯(lián)系观蜗。

(2)組成鏈?zhǔn)秸{(diào)用的必要條件就是在方法里面返回對(duì)象自己

錯(cuò)臊恋,只要返回的是同一個(gè)類型的對(duì)象就可以,未必要是自己墓捻。

(3)ReactiveCocoa是Facebook出的一個(gè)FRP開源庫

錯(cuò)抖仅。不是fb公司的項(xiàng)目,來自github團(tuán)隊(duì)。

(4)ReactiveCocoa是基于KVO的一個(gè)開源庫

錯(cuò)撤卢。雖然有些信號(hào)的產(chǎn)生來自kvo环凿,但是有些不是。

(5)ReactiveCocoa是一個(gè)純函數(shù)式編程的庫

錯(cuò)放吩。rac不全是函數(shù)式編程智听,它更多的設(shè)計(jì)目標(biāo)是響應(yīng)式編程。

(5)下面的函數(shù)由于有賦值所以不是一個(gè)純函數(shù)


雖然有賦值渡紫,但是每次固定輸入都能得到固定的輸出到推,并且沒有改變外部的狀態(tài),是純函數(shù)惕澎。

二莉测、問答題:
(1)Pull-driver和Push-driver的區(qū)別?
想到了master集灌,slave這個(gè)經(jīng)典的場景悔雹。一個(gè)黑心的老板有5個(gè)程序員,這里有100個(gè)需求欣喧。每個(gè)程序員完成后腌零,告訴老板說我做完了,再來一個(gè)需求唆阿。這就是pull driver益涧,接收方主動(dòng)來拿。如果老板不管這個(gè)人忙不忙驯鳖,需求來了就直接分配給某個(gè)程序員闲询,這就是push driver,源直接推送給某個(gè)接收方浅辙。

(2)怎么理解函數(shù)式語言中的引用透明扭弧?
阮一峰的博客:

引用透明(Referential transparency),指的是函數(shù)的運(yùn)行不依賴于外部變量或"狀態(tài)"记舆,只依賴于輸入的參數(shù)鸽捻,任何時(shí)候只要參數(shù)相同,引用函數(shù)所得到的返回值總是相同的泽腮。

百科里這么解釋:

引用透明(Referential Transparent)的概念與函數(shù)的副作用相關(guān)御蒲,且受其影響。如果程序中任意兩處具有相同輸入值的函數(shù)調(diào)用能夠互相置換诊赊,而不影響程序的動(dòng)作厚满,那么該程序就具有引用透明性。它的優(yōu)點(diǎn)是比非引用透明的語言的語義更容易理解碧磅,不那么晦澀碘箍。純函數(shù)式語言沒有變量遵馆,所以它們都具有引用透明性。

我的理解是這個(gè)函數(shù)只處理了輸入的值丰榴,沒有改變外部的其他變量的狀態(tài)团搞,不會(huì)產(chǎn)生副作用。

(3)函數(shù)式語言主張不變量的原因是什么多艇?
不可變性首先解決了線程安全的問題。
其次通過聲明區(qū)分可變和不可變性降低了復(fù)雜度像吻。我們可以更加關(guān)注變化的value峻黍,增加了一種語義。當(dāng)我們看到一個(gè)值聲明是可變的拨匆,我們會(huì)知道這個(gè)值在后面的代碼中會(huì)被賦值姆涩。

三、編程題:
(1)基于變量不可變(任何變量不允許二次賦值)來實(shí)現(xiàn)一個(gè)計(jì)算最大值的函數(shù)惭每,定義如下
<code>int max(int *array, int count) </code>

直接用swift寫了骨饿,這個(gè)count參數(shù)理解為前多少個(gè)數(shù)里的最大值:

func maxNumbers(array:[Int],count:Int) -> Int {
    if count==2 {
        return biggerNumber(array[0], y: array[1])
    }else{
        let lastNumber=array[count-1]
        return biggerNumber(lastNumber, y: maxNumbers(array, count: count-1))
    }
}

func biggerNumber(x:Int,y:Int) -> Int {
    return x>y ? x:y
}

//test case
let nubmers=[1,4,23,56,2]
let result = maxNumbers(nubmers, count: 5)

(2)自由發(fā)揮寫一個(gè)高階函數(shù)應(yīng)用的例子,要求必須有返回函數(shù)的部分
寫了一個(gè)獲取兩個(gè)數(shù)計(jì)算的方法工廠:

func calulatorFactory(operatorIdentifer:String) -> (Int,Int)->Int {
    switch operatorIdentifer {
    case "*":
        return { x,y in
            return x*y
        }
    default:
        return {x,y in
            return x+y
        }
    }
}

//test case
let multipyFunc=calulatorFactory("*")
let calResult=multipyFunc(3,5)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末台腥,一起剝皮案震驚了整個(gè)濱河市宏赘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌黎侈,老刑警劉巖察署,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異峻汉,居然都是意外死亡贴汪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門休吠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扳埂,“玉大人,你說我怎么就攤上這事瘤礁⊙舳” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵蔚携,是天一觀的道長希太。 經(jīng)常有香客問我,道長酝蜒,這世上最難降的妖魔是什么誊辉? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮亡脑,結(jié)果婚禮上堕澄,老公的妹妹穿的比我還像新娘邀跃。我一直安慰自己,他們只是感情好蛙紫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布拍屑。 她就那樣靜靜地躺著,像睡著了一般坑傅。 火紅的嫁衣襯著肌膚如雪僵驰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天唁毒,我揣著相機(jī)與錄音蒜茴,去河邊找鬼。 笑死浆西,一個(gè)胖子當(dāng)著我的面吹牛粉私,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播近零,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诺核,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了久信?” 一聲冷哼從身側(cè)響起窖杀,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎裙士,沒想到半個(gè)月后陈瘦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡潮售,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年痊项,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酥诽。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鞍泉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肮帐,到底是詐尸還是另有隱情咖驮,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布训枢,位于F島的核電站托修,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏恒界。R本人自食惡果不足惜睦刃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望十酣。 院中可真熱鬧涩拙,春花似錦际长、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搓彻,卻和暖如春如绸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旭贬。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工竭沫, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骑篙。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像森书,于是被迫代替她去往敵國和親靶端。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容