鏈式程式設計思想: 將多行操作通過 「.」 連線成一句**, 使**可讀性好, 比如: 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 ...