Saturday, 17 August 2013

Merge two differently typed signals

Merge two differently typed signals

Suppose I have a signal of arrays arraySignal, and a signal of objects
addedObjectsSignal.
I would like to define a third signal, modifiedArraySignal, that takes the
latest array from arraySignal and adds to it the objects from
addedObjectsSignal sent since the latest array from arraySignal.
Here's one way to do it:
RACSignal *modifiedArraySignal =
[[RACSignal
merge:@[arraySignal, addedObjectsSignal]]
scanWithStart:@[]
reduce:^(id running, id next) {
if ([next isKindOfClass:[NSArray class]])
return next;
else
return [running addObject:next];
}];
Is there another way to it that doesn't discard type information and use
-[NSObject isKindOfClass:]?

No comments:

Post a Comment