广安市国土资源局网站建设,妇产医院网站源码,网站设计目标 优帮云,wordpress自动转内链一、概念
链式编程风格是一种将多个函数调用连接起来#xff0c;形成一条函数调用链的编程风格。这种风格的代码可以通过返回 self 或某个适当的对象来实现。
1.优点
代码简洁、连贯、易于阅读。可以将一个方法的输出直接作为下一个方法的输入#xff0c;降低中间变量的使…一、概念
链式编程风格是一种将多个函数调用连接起来形成一条函数调用链的编程风格。这种风格的代码可以通过返回 self 或某个适当的对象来实现。
1.优点
代码简洁、连贯、易于阅读。可以将一个方法的输出直接作为下一个方法的输入降低中间变量的使用。
2.缺点
链式调用过长可能会导致代码可读性降低。由于错误可能出现在链的任何一环所以调试可能会有所困难。
二、代码
下面是一个使用链式编程风格构建的 NSMutableAttributedString 的例子这个例子将展示如何将一系列的 NSAttributedString 配置操作链接在一起。
首先我们需要创建一个类 ChainableAttributedBuilder它可以用于创建和配置 NSAttributedString
1..h文件
#import Foundation/Foundation.h
#import UIKit/UIKit.h NS_ASSUME_NONNULL_BEGIN interface ChainableAttributedBuilder : NSObject property (nonatomic, strong, readonly) NSMutableAttributedString *mutableAttributedString; - (ChainableAttributedBuilder *(^)(NSString *text))append;
- (ChainableAttributedBuilder *(^)(UIColor *color))textColor;
- (ChainableAttributedBuilder *(^)(UIFont *font))font;
- (ChainableAttributedBuilder *(^)(NSParagraphStyle *style))paragraphStyle; end NS_ASSUME_NONNULL_END 2..m文件
#import ChainableAttributedBuilder.h implementation ChainableAttributedBuilder - (instancetype)init { if (self [super init]) { _mutableAttributedString [[NSMutableAttributedString alloc] init]; } return self;
} - (ChainableAttributedBuilder *(^)(NSString *text))append { return ^(NSString *text) { NSAttributedString *attributedString [[NSAttributedString alloc] initWithString:text]; [self.mutableAttributedString appendAttributedString:attributedString]; return self; };
} - (ChainableAttributedBuilder *(^)(UIColor *color))textColor { return ^(UIColor *color) { [self.mutableAttributedString addAttribute:NSForegroundColorAttributeName value:color range:NSMakeRange(0, self.mutableAttributedString.length)]; return self; };
} - (ChainableAttributedBuilder *(^)(UIFont *font))font { return ^(UIFont *font) { [self.mutableAttributedString addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, self.mutableAttributedString.length)]; return self; };
} - (ChainableAttributedBuilder *(^)(NSParagraphStyle *style))paragraphStyle { return ^(NSParagraphStyle *style) { [self.mutableAttributedString addAttribute:NSParagraphStyleAttributeName value:style range:NSMakeRange(0, self.mutableAttributedString.length)]; return self; };
} end 3.调用代码 ChainableAttributedBuilder *builder [[ChainableAttributedBuilder alloc] init]; builder.append(Hello ).font([UIFont systemFontOfSize:16]).textColor([UIColor redColor]); builder.append(world!).font([UIFont systemFontOfSize:20]).textColor([UIColor blueColor]); NSAttributedString *attributedString builder.mutableAttributedString; // 现在attributedString 是一个带有不同样式的 Hello world! 的富文本字符串。