7.8 編程思想
鏈?zhǔn)骄幊?/h2>
特點(diǎn)
- 是將多個(gè)操作(多行代碼)通過(guò)點(diǎn)號(hào)(.)鏈接在一起成為一句代碼,使代碼可讀性好仁卷。a(1).b(2).c(3)
- 方法的返回值是block,block必須有返回值(對(duì)象本身)管削,block參數(shù)(需要操作的值)
- 示例
@class Calculator;
typedef Calculator * (^addBlock)(int);
typedef Calculator * (^subBlock)(int);
typedef Calculator * (^mulBlock)(int);
typedef Calculator * (^diviBlock)(int);
@interface Calculator : NSObject
- (addBlock)add;
- (subBlock)sub;
- (mulBlock)mul;
- (diviBlock)divi;
@interface Calculator()
@property (assign , nonatomic)int currNum;
@end
@implementation Calculator
- (addBlock)add
{
return ^(int a){
self.currNum += a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
- (subBlock)sub{
return ^(int a){
self.currNum -= a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
- (mulBlock)mul{
return ^(int a){
self.currNum *= a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
- (diviBlock)divi{
return ^(int a){
self.currNum /= a;
NSLog(@"result=%d",self.currNum);
return self;
};
}
Calculator * ca = [[Calculator alloc] init];
ca.add(10).sub(1).mul(9).divi(9);
@end
函數(shù)編程
特點(diǎn)
- 函數(shù)式編程思想:是把操作盡量寫(xiě)成一系列嵌套的函數(shù)或者方法調(diào)用杂彭。
- 函數(shù)式編程特點(diǎn):每個(gè)方法必須有返回值(本身對(duì)象),把函數(shù)或者Block當(dāng)做參數(shù),block參數(shù)(需要操作的值)block返回值(操作結(jié)果)
- 代表:ReactiveCocoa岩喷。
- 用函數(shù)式編程實(shí)現(xiàn)视事,寫(xiě)一個(gè)加法計(jì)算器,并且加法計(jì)算器自帶判斷是否等于某個(gè)值.
- 示例
#import
@class CaculatorMaker;
@interface NSObject (CaculatorMaker)
//計(jì)算
+ (int)makeCaculators:(void(^)(CaculatorMaker *make))caculatorMaker;
@end
#import "NSObject+CaculatorMaker.h"
#import "CaculatorMaker.h"
@implementation NSObject (CaculatorMaker)
//計(jì)算
+ (int)makeCaculators:(void(^)(CaculatorMaker *make))block
{
CaculatorMaker *mgr = [[CaculatorMaker alloc] init];
block(mgr);
return mgr.iResult;
}
@end
@interface CaculatorMaker : NSObject
@property (nonatomic, assign) int iResult;
//加法
- (CaculatorMaker *(^)(int))add;
//減法
- (CaculatorMaker *(^)(int))sub;
//乘法
- (CaculatorMaker *(^)(int))muilt;
//除法
- (CaculatorMaker *(^)(int))divide;
@end
#import "CaculatorMaker.h"
@implementation CaculatorMaker
- (CaculatorMaker *(^)(int))add
{
return ^(int value)
{
_iResult += value;
return self;
};
}
@end
//調(diào)用
int iResult = [NSObject makeCaculators:^(CaculatorMaker *make) {
make.add(1).add(2).add(3).divide(2);
}];
響應(yīng)式編程
特點(diǎn)
- 響應(yīng)式編程思想:不需要考慮調(diào)用順序,只需要知道考慮結(jié)果礼旅,類(lèi)似于蝴蝶效應(yīng)膳叨,產(chǎn)生了一個(gè)事件,會(huì)影響很多東西痘系,這些事件就像流一樣傳播出去菲嘴,然后影響結(jié)果,借用面向?qū)ο蟮囊痪湓?huà)汰翠,萬(wàn)物皆是流龄坪,
- 代表:KVO
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者