Я бы хотел расширить Driver<[String]?>
следующим образом:
extension Driver where E == Array<String>? {
var dashedLabel: UILabel {
let label = UILabel()
map({ $0?.joined(separator: "-") }).drive(label.rx.text)
// yes, the above is never disposed
// what I am interested about is this error:
// Referencing instance method 'drive' on
// 'SharedSequenceConvertibleType'
// requires the types
// 'SharedSequence<S, Optional<Array<String>>>.SharingStrategy'
// (aka 'S') and 'DriverSharingStrategy' be equivalent
return label
}
}
Когда я расширяю его таким образом extension Driver where S == DriverSharingStrategy, E == Array<String>?
, ошибка исчезает. Почему мне нужно ограничивать S
, когда Driver
уже ограничивает его до DriverSharingStrategy
:
public typealias Driver<E> = SharedSequence<DriverSharingStrategy, E>
public struct SharedSequence<S: SharingStrategyProtocol, Element> : SharedSequenceConvertibleType