2017-02-02 25 views
0

RxSwiftのObservable classasObservable methodの根拠と目的を理解することに問題があります。Swift:RxSwiftのasObservable()メソッドと型消去を

/// A type-erased `ObservableType`. 
/// 
/// It represents a push style sequence. 
public class Observable<Element> : ObservableType { 
    /// Type of elements in sequence. 
    public typealias E = Element 

    public func subscribe<O: ObserverType>(_ observer: O) -> Disposable where O.E == E { 
     abstractMethod() 
    } 

    public func asObservable() -> Observable<E> { 
     return self 
    } 
} 

自己復帰時にasObservableの目的は何ですか?

このメソッドを実行できる場合は、すでにオブジェクトにアクセスできます。また、コメント中の「タイプ消去ObservableType」はどういう意味ですか?

答えて

1

ObservableTypeプロトコルを見て、どのオブジェクトがそれに準拠しているか(つまり、件名など)を見ると、その答えは明らかです。 唯一の保証は、asObservableへの呼び出しに対してオブジェクトがObservableを返すことです。適合性はObservableでは些細なものですが、被験者や他のユニットではあまり適合しないかもしれません。しかし、この保証により、Observableを同じオペレーターチェーンで一緒に提供できるすべてのタイプを使用することができます。

本質的にはStringの適合度はCustomStringConvertibleに似ています。

+0

コメントにはタイプが消去されていると表示されるのはなぜですか?このタイプは本当に消去されていますか? – Boon

+0

私は、コメントが混乱する可能性があることに同意します。しかし、これは、 'ObservableType'(例えば、' PublishSubject')の型が 'Element'の型ではなく、消去されていることを意味するものです。 –