-(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 [class return:value];
Кроме того, что означает этот тип instancetype? Предположим, что значение - это строка, и я проверяю, больше ли ее длина 2. Что будет возвращено с помощью метода фильтра?
«instancetype» означает, что если вы вызываете это на «RACSignal», вы получите ответ «RACSignal», и если вы вызовете его на «RACSequence», вы получите «RACSequence» назад, так что вам не нужно снижать с «RACStream». Обычно вы видите это на методах класса, хотя ... –