主 Bundle 栏
![](https://img.haomeiwen.com/i2932245/c38c433d554b8f35.png)
调试区截屏
![](https://img.haomeiwen.com/i2932245/00cfad587c8e0d77.png)
Masonry 中的链式编程与函数式编程代码范例:
//虽然我知道可能没有这么简单,但是宏观理解来看的话:
//点语法 : --> 链式编程
//小括号 : --> 函数式编程
[self.view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo (self.view) ;
make.left.equalTo (self.view) ;
make.width.mas_equalTo (@40) ;
make.height.mas_equalTo (@40) ;
}] ;
ViewController.h 文件
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@end
ViewController.m 文件
#import "ViewController.h"
#import "Person.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//创建 person 对象:
Person *person = [[Person alloc] init] ;
//这就是函数式编程与链式编程的结合实例:点语法的遍历和小括号的使用!就酱!
person.run2().eat2().run2().eat2() ;
//含参的链式编程代码:
person.run3(5).eat3(@"管氏翅吧") ;
}
@end
Person.h 文件
#import <Foundation/Foundation.h>
@interface Person : NSObject
- (void)run ;
- (void)eat ;
- (Person *)run1 ;
- (Person *)eat1 ;
//哪里能用个小括号?!小括号就是函数式编程中的函数!
//真正的函数式编程的体现是因为返回的是一个 block!
- (Person *(^)())run2 ;
- (Person *(^)())eat2 ;
//含参 block:
- (Person *(^)(NSString *food))eat3 ;
- (Person *(^)(int distance))run3 ;
@end
Person.m 文件
#import "Person.h"
@implementation Person
//无参 block 的 run2:
- (Person *(^)())run2 {
//创建一个 Person 类型的 block 对象并返回对象:
Person *(^run2Block)() = ^() {
NSLog(@"我就是 run2Block") ;
//返回对象:
return self ;
} ;
//要求返回的是一个 block 值,而且这个 block 是 Person 类型的对象:
return run2Block ;
}
//无参 block 的 eat2:
- (Person *(^)())eat2 {
return ^() {
NSLog(@"我就是 eat2Block") ;
return self ;
} ;
}
//含参 block 的 eat3:
- (Person *(^)(NSString *food))eat3 {
return ^(NSString *food) {
NSLog(@"吃的是 %@" , food) ;
return self ;
} ;
}
//含参 block 的 run3:
- (Person *(^)(int distance))run3 {
return ^(int distance) {
NSLog(@"今晚我跑了 %d 千米" , distance) ;
return self ;
} ;
}
@end
网友评论