鏈式程式設計初試

2021-07-16 18:14:41 字數 2544 閱讀 7964

鏈式程式設計思想: 將多行操作通過 「.」 連線成一句**, 使**可讀性好, 比如: a(1).b(2).c(3), 代表性的就是masonry

鏈式程式設計特點: 方法的返回值是block, block必有返回值(自身物件), block引數(操作物件)

先簡單介紹下目前咱們已知的程式設計思想。

1 面向過程:處理事情以過程為核心,一步一步的實現。

2 物件導向:萬物皆物件

鏈式程式設計特點:方法的返回值是block,block必須有返回值(本身物件),block引數(需要操作的值)

代表:masonry框架。

4 響應式程式設計思想:不需要考慮呼叫順序,只需要知道考慮結果,類似於蝴蝶效應,產生乙個事件,會影響很多東西,這些事件像流一樣的傳播出去,然後影響結果,借用物件導向的一句話,萬物皆是流。

代表:kvo運用。

5 函式式程式設計思想:是把操作盡量寫成一系列巢狀的函式或者方法呼叫。

函式式程式設計特點:每個方法必須有返回值(本身物件),把函式或者block當做引數,block引數(需要操作的值)block返回值(操作結果)

代表:reactivecocoa。

用函式式程式設計實現,寫乙個加法計算器,並且加法計算器自帶判斷是否等於某個值.

//  乙個計算器

#import

#import

"caculatormaker.h"

/** * 鏈式程式設計初試,

*/@inte***ce nsobject (caculatormaker)

+ (int)makecaculators:(void(^)(caculatormaker *make))caculatormaker;

@end

#import

"nsobject+caculatormaker.h"

@implementation nsobject (caculatormaker)

+ (int)makecaculators:(void (^)(caculatormaker *))caculatormaker

@end

#import 

@inte***ce

caculatormaker : nsobject

@property(nonatomic, assign)int result;

- (caculatormaker *(^)(int))add;

- (caculatormaker *(^)(int))sub;

- (caculatormaker *(^)(int))multi;

- (caculatormaker *(^)(int))divide;

@end

#import "caculatormaker.h"

@implementation

caculatormaker

- (caculatormaker *(^)(int))add ;

}- (caculatormaker *(^)(int))sub ;

}- (caculatormaker *(^)(int))multi ;

}- (caculatormaker *(^)(int))divide ;

}@end

//  呼叫:

int result = [nsobject makecaculators:^(caculatormaker *make) ];

nslog(@"result: %d", result);

再來乙個例子

#import 

@class

chainstylemanager;

typedef chainstylemanager *(^chainstylevoidblock)();

typedef chainstylemanager *(^chainstylestringblock)(nsstring *);

@inte***ce

chainstylemanager : nsobject

- (chainstylevoidblock)begin;

- (chainstylevoidblock)firstblock;

- (chainstylestringblock)secondblock;

@end

#import "chainstylemanager.h"

@implementation

chainstylemanager

- (chainstylevoidblock)begin ;

}- (chainstylevoidblock)firstblock ;

}- (chainstylestringblock)secondblock ;

}@end

呼叫

chainstylemanager *chainmgr = [[chainstylemanager alloc] init];

chainmgr.begin().firstblock().secondblock(@"3");

初試MFC 基於Dialog程式設計

一 關於全域性變數的設定。1 在stdfx.h裡面定義乙個全域性變數即可,其他地方使用,就可以用extern宣告。在cwinthread裡面有個成員變數mainfram,所以在這裡定義乙個公共成員變數也是可以的。二 關於執行緒 主要有兩種執行緒,乙個是所謂的uithread,乙個是work thre...

iOS鏈式程式設計

nsinteger result adder.add 4 sub 1 mult 2 div 3 表示 4 1 2 3,是不是很方便很直觀。我們知道,如果是c 的實現話鏈式操作是很簡單的,因為c 的函式呼叫就是通過點操作呼叫的,只需要返回物件本身就可以實現鏈結了。但是oc就不行了,因為oc的點操作表示...

pandas 鏈式程式設計

鏈式程式設計技術 usual non functional way df2 df.copy df2 k v functional assign way df2 df.assign k v 就地分配可能會比assign快,但是assign可以方便地進行鏈式程式設計 使用外括號,這樣便於新增換行符 r ...