2017-02-02 3 views
0

Ich habe ein Problem zu verstehen, die Begründung und den Zweck für asObservable method in RxSwift Observable class.Swift: RxSwift asObservable() -Methode und Typ löschen

/// 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 
    } 
} 

Was ist der Zweck von asObservable, wenn es sich selbst zurückgibt?

Sicher, wenn Sie diese Methode ausführen können, haben Sie bereits Zugriff auf das Objekt. Auch was bedeutet der "Typ-gelöscht ObservableType" im Kommentar?

Antwort

1

Ich glaube, die Antwort ist offensichtlich, wenn Sie das ObservableType Protokoll betrachten und welche Objekte dazu passen (nämlich Dinge wie Themen, etc.). Die einzige Garantie ist, dass das Objekt einen Observable als Antwort auf einen Aufruf an asObservable zurückgibt. Während Konformität für eine Observable trivial ist, kann es weniger für Subjekte und andere Einheiten sein. Mit dieser Garantie können Sie jedoch alle Typen verwenden, die zusammen einen Observable in derselben Operatorkette bereitstellen können.

Im Wesentlichen ist dies ähnlich wie String s Konformität mit CustomStringConvertible.

+0

Warum sagt der Kommentar, dass der Typ gelöscht ist? Ist der Typ dafür wirklich gelöscht? – Boon

+0

Ich stimme zu, dass der Kommentar verwirrend sein kann. Ich lese es jedoch so, dass der Typ des "ObservableType" (z. B. ein "PublishSubject") gelöscht wird, nicht der Typ des "Elements". –

Verwandte Themen