过滤方法如何工作?
How does filter method work?
-(instancetype)filter:(BOOL (^)(id value))block {
NSCParameterAssert(block != nil);
Class class = self.class;
return [[self flattenMap:^ id (id value) {
if (block(value)) {
return [class return:value];
} else {
return class.empty;
}
}] setNameWithFormat:@"[%@] -filter:", self.name];
}
这是过滤器的实现 ReactiveCocoa.I 不知道这段代码是什么 means.Also 我无法获得对第二个 return 方法的任何引用。
return [class return:value];
另外,这个实例类型是什么意思?假设这个值是一个字符串,我检查它的长度是否大于2。使用filter方法会return过滤什么?
过滤器方法调用当前 class 的 class 方法以使用该方法获取 RACStream subclass。使用 return:
将给出一个信号,发送传递的值然后完成。使用 empty
给出一个信号,该信号立即发送完成而不发送下一个值,由于 flattenMap:
用正在创建的信号切换信号,它从流中删除了值过滤值。
-(instancetype)filter:(BOOL (^)(id value))block {
NSCParameterAssert(block != nil);
Class class = self.class;
return [[self flattenMap:^ id (id value) {
if (block(value)) {
return [class return:value];
} else {
return class.empty;
}
}] setNameWithFormat:@"[%@] -filter:", self.name];
}
这是过滤器的实现 ReactiveCocoa.I 不知道这段代码是什么 means.Also 我无法获得对第二个 return 方法的任何引用。
return [class return:value];
另外,这个实例类型是什么意思?假设这个值是一个字符串,我检查它的长度是否大于2。使用filter方法会return过滤什么?
过滤器方法调用当前 class 的 class 方法以使用该方法获取 RACStream subclass。使用 return:
将给出一个信号,发送传递的值然后完成。使用 empty
给出一个信号,该信号立即发送完成而不发送下一个值,由于 flattenMap:
用正在创建的信号切换信号,它从流中删除了值过滤值。