过滤方法如何工作?

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: 用正在创建的信号切换信号,它从流中删除了值过滤值。