iOS函式式程式設計的實現 響應式程式設計概念

2021-08-01 04:50:10 字數 2461 閱讀 8429

簡介

本篇主要回顧一下--ios函式式程式設計 && 響應式程式設計概念 ,如何一步步實現函式式程式設計的過程,對閱讀masonry && snapkit原始碼有一定的幫助。

作為乙個ios 開發者,那麼你一定用過masnory/ snapkit;

masonry是乙個oc開發中,非常好用的自動布局的第三方框架;

snapkit是masonry團隊打造的swift版本的自動布局框架;如果你沒有用過,在自動布局中用的是蘋果原生的或者原生的公升級版vfl語言,那我只好為你點「贊」!

乙個典型的masonry的語句:

make.centery.equalto(self.view).offset(100);

就是這個「.」讓masonry更加鮮活的展示給了開發者,在我心中masnory/ snapkit函式式程式設計的乙個經典的代表作,非常值得參考和學習!

鏈式程式設計的好處不用再說了,用過masnory/ snapkit的都知道;

那麼問題來了,怎麼寫鏈式程式設計呢?

一步步來實現乙個函式式程式設計

1.新建專案command +shift + n

2.建立乙個person類  並為其增加兩個方法

- (void)run;

- (void)study;

簡單實現:

- (void)run{

nslog(@"run");

- (void)study {

nslog(@"study")

3.例項化並呼叫相關的方法

person*person = [[personalloc]init];

[personrun];

[personstudy];

以上三步實現了乙個非常簡單的程式;

最終目標

person.runblock().studyblock().runblock();

person.studyblock().studyblock().runblock();

分解目標

1.先實現這種方式呼叫

[[person run1] study1];

2.再實現最終目標

顯然,如果想要實現[person run1]呼叫乙個方法,那麼run1就需要乙個返回乙個物件,讓這個物件去呼叫study1。 這樣分析後,就簡單了,就是增加乙個返回值。

**方法的宣告

-(person*)run1;

-(person*)study1;

方法的實現

- (person*)run1 {

nslog(@"run");

return[[personalloc] init];

- (person*)study1{

nslog(@"study");

return[[personalloc]init];

實現最終目標:

person.runblock().studyblock().runblock();

在oc中,`()`block是以()的形式去執行的,猜想如果返回乙個block的話,那麼我就可以用()來實現runblock()這種效果了吧!     再結合我們的分解步驟,runblock()代表執行了乙個block,如果這個block的返回值的是乙個物件的話,那麼呼叫另外乙個方法;這樣就可以一直鏈結下去吧!實現了我們想要的目標!

**: 宣告

- (person* (^)())runblock;

- (person* (^)())studyblock;

實現:- (person* (^)())runblock {

person* (^block)() = ^() {

nslog(@"run");

returnself;

returnblock;

- (person* (^)())studyblock {

person* (^block)() = ^()  {

nslog(@"study");

returnself;

returnblock;

再來看一下masonry的乙個函式式程式設計

make.right.equalto(self.right).insets(kpadding);

最終呼叫的函式:返回的就是乙個返回值為masconstraint的block

- (masconstraint* (^)(id))equalto {

return^id(idattribute) {

returnself.equaltowithrelation(attribute,nslayoutrelationequal);

函式式程式設計總結

如果想再去呼叫別的方法,那麼就需要返回乙個物件;

如果想用()去執行,那麼需要返回乙個block;

如果想讓返回的block再呼叫物件的方法,那麼這個block就需要返回乙個物件(即返回值為乙個物件的block)。

ios 函式式程式設計與響應式程式設計

ios函式式程式設計 響應式程式設計概念 如果想再去呼叫別的方法,那麼就需要返回乙個物件 如果想用 去執行,那麼需要返回乙個block 如果想讓返回的block再呼叫物件的方法,那麼這個block就需要返回乙個物件 即返回值為乙個物件的block 在網上流傳乙個非常經典的解釋 響應式程式設計的概念 ...

ios 鏈式程式設計 函式式程式設計以及響應式程式設計

我們如果在完成一件事情的時候,可能會需要有很多步驟,那我們其實就可以把這個步驟看成是乙個乙個的過程,然後再去組合起來,這樣會比較的清晰。就比如說學生要吃飯,讀書,跑步我們如果直接去呼叫方法的話是直接如以下步驟所示去呼叫的,這就是去實現吃飯,學習,跑步。這裡需要注意的是無引數的方法也是可以通過點的形式...

函式式程式設計和響應式程式設計

在程式開發中,a b c 賦值之後,b或者c的值變化後,a的值不會跟著變化。響應式程式設計目標就是,如果b或者c的數值發生變化,a的數值會同時發生變化。函式式程式設計是一系列被不公平對待的程式設計思想的保護傘,它的核心思想是,它是一種將程式看成是數學方法的求值 不會改變狀態 不會產生 後面我們馬上會...