给定此代码:
let a = PassthroughSubject<Int, Never>()
let b = PassthroughSubject<Int, Never>()
let result = a.merge(with:b).eraseToAnyPublisher()
我认为result
应该是AnyPublisher<Int, Never>
类型,但看起来Xcode将其视为(空格格式化我的):
AnyPublisher<
Publishers.MergeMany<
PassthroughSubject<Int, Never>
>.Output,
Publishers.MergeMany<
PassthroughSubject<Int, Never>
>.Failure
> (aka 'AnyPublisher<Int, Never>')
而且这是just美元,不是我预期的.我猜有一些实现被隐藏了,但这并不是我所希望的.显然,考虑到"aka"部分,Xcode知道它等同于"AnyPublisher<;Int;Int;,Never>;",但为什么不完全删除它的类型呢?
我甚至在链条的前面try 过擦除文字,如下所示:
let a = PassthroughSubject<Int, Never>().eraseToAnyPublisher()
let b = PassthroughSubject<Int, Never>().eraseToAnyPublisher()
let result = a.merge(with:b).eraseToAnyPublisher()
这只是稍微好一点,因为Xcode认为result
有类型:
AnyPublisher<
Publishers.MergeMany<
AnyPublisher<Int, Never>
>.Output,
Publishers.MergeMany<
AnyPublisher<Int, Never>
>.Failure
> (aka 'AnyPublisher<Int, Never>')