для ряда издателей, чтобы потребители подписывались на разные части цепочки
Проблема в том, что это совершенно игрушечный пример. В реальной жизни вы обнаружите, что не будете «делиться» одним и тем же конечным издателем в каком-либо значимом смысле, потому что ваш rootPublisher
является struct .
Это совершенно законно для издатель (имея в виду любую часть заголовка конвейера), чтобы иметь более одного подписчика, но если вы не скажете share
(или multicast
), он станет двумя отдельными издателями.
Но Я считаю, что наличие «готового» издателя облегчает жизнь потребителю. Я вижу, что это не тот шаблон, который обычно используется для Combine
Это не так. Торговать сложным непрозрачным издателем (имеется в виду глава конвейера) вполне стандартно. Например, издатель задач с данными - это что-то вроде отложенного будущего и карты, даже если вы этого не видите. Все дело в том, что вы можете придумать и продать своего собственного издателя, созданного для частей издателя-оператора, которые вам даны (или вы можете написать свои собственные).