2016-12-30 10 views
0

私は理解していないいくつかのスウィフト構文があります...スウィフトの構文|>や〜

let creator = .template |> User.lens.avatar.small .~ "" 

誰かが|>.~構文は何をすべきかを教えてもらえますか。? 私も%~が使用されて参照してください。

スウィフトのマニュアルでその場所を指摘できたら、私はそれを感謝します。これらの文字を使用して検索することは困難でした。私はシンボルの完全な配列を見たいと思います。

+2

このコードはどこですか?あなたは、+や - のような演算子になりたいものは何でも定義できますか?私はそれがちょうど2つのカスタム演算子だと思います。 – luk2302

+0

https://github.com/kickstarter/ios-oss/blob/master/Kickstarter-iOS/Tests/Views/ActivitiesViewControllerTests.swift – Christopher

+2

ほとんどの場合と同様に、オペレータはコマンドをクリックして宣言を表示できます。 – Alexander

答えて

1

ストリームパイプライン

ストリームは|>ストリームパイプラインオペレータとストリームの操作を使用して構成することができます。

例えば、searchTextStreamを使用して非常に一般的なインクリメンタルサーチの手法は次のようになります。

let searchResultsStream: Stream<[Result]> = searchTextStream 
    |> debounce(0.3) 
    |> distinctUntilChanged 
    |> map { text -> Stream<[Result]> in 
     return API.getSearchResultsStream(text) 
    } 
    |> switchLatestInner 

をいくつかのシナリオがあります(例えばrepeat())あなたは、複製可能Stream<T>.ProducerVoid -> Stream<T>)ではなく、プレーンStream<T>を使用したいとき。この場合、代わりに|>> streamProducer-pipelining演算子を使用できます。

// first, wrap stream with closure 
let timerProducer: Void -> Stream<Int> = { 
    return createTimerStream(interval: 1) 
     |> map { ... } 
     |> filter { ... } 
} 

// then, use `|>>` (streamProducer-pipelining operator) 
let repeatTimerProducer = timerProducer |>> repeat(3) 

しかし、あなたはまた、(@autoclosureのおかげで)だけでなく、ストリーム&ストリーム操作の |>>演算子を使用することができますので、上記の場合には、閉鎖を包むことは、常に、厄介になります。

let repeatTimerProducer = createTimerStream(interval: 1) 
    |>> map { ... } 
    |>> filter { ... } 
    |>> repeat(3)