-(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过滤器的实现。我不知道这段代码的含义。我也无法获得对第二种返回方法的任何引用。
return [class return:value];
此外,这个instancetype是什么意思?假设值是一个字符串,我检查它的长度是否大于2.使用filter方法返回什么?
答案 0 :(得分:0)
filter方法调用当前类的类方法以使用该方法获取RACStream子类。使用return:
将发出一个信号,该信号发送传递的值然后完成。使用empty
给出一个信号,该信号立即发送完成而不发送下一个值,这将从流中删除值过滤值,这要归功于flattenMap:
将信号切换为正在创建的信号。