Кто-нибудь может объяснить метод Subject.eraseToAnySubject () Swift Combine и где его следует использовать? - PullRequest
1 голос
/ 15 июня 2019

Я вижу, что Subject.eraseToAnySubject() возвращает конкретный Subject тип AnySubject.Я предполагаю, что это использует шаблон ластика типа.

Тем не менее, документы Apple почти не содержат подробностей: https://developer.apple.com/documentation/combine/passthroughsubject/3241547-erasetoanysubject

Кто-нибудь может объяснить, как это работает и где его следует использовать?

Кроме того, можно ли использовать ключевое слово some, чтобы избежать использования AnySubject?

1 Ответ

3 голосов
/ 20 июня 2019

В Combine, когда вы связываете издателей с операторами, тип возврата очень быстро усложняется, поскольку он содержит конкретные сведения о каждом издателе в цепочке.

Например, простой строковый издатель с прикрепленным фильтром и картой Оператор будет иметь тип возвращаемого значения: <Filter<Map<Published<String, Error>>>>

eraseToAny использует шаблон ластика типа для захвата того, что действительно важно в возвращаемом типе. В приведенном примере добавление eraseToAnyPublisher сократит тип до более краткого <AnyPublisher<String, Error>>

...