0
有一些斯威夫特語法,我不明白...斯威夫特語法上|>和〜
let creator = .template |> User.lens.avatar.small .~ ""
有人能告訴我|>
和.~
語法做什麼? 我也看到%~
使用。
如果你能指出Swift文檔中的位置,我將不勝感激。使用這些字符搜索很困難。我希望看到所有的符號。
有一些斯威夫特語法,我不明白...斯威夫特語法上|>和〜
let creator = .template |> User.lens.avatar.small .~ ""
有人能告訴我|>
和.~
語法做什麼? 我也看到%~
使用。
如果你能指出Swift文檔中的位置,我將不勝感激。使用這些字符搜索很困難。我希望看到所有的符號。
流可以通過使用|>
流流水線操作和流操作組成。
例如,使用searchTextStream
一個很普通的增量的搜索技術將是這樣的:
let searchResultsStream: Stream<[Result]> = searchTextStream
|> debounce(0.3)
|> distinctUntilChanged
|> map { text -> Stream<[Result]> in
return API.getSearchResultsStream(text)
}
|> switchLatestInner
有某些情況下(如repeat()
),當你想使用一個可複製的,Stream<T>.Producer
(Void -> 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)
那裏的代碼來自哪裏?你知道你可以定義幾乎任何你想成爲運算符的東西,比如+和 - ?我想這只是兩個自定義操作符。 – luk2302
https://github.com/kickstarter/ios-oss/blob/master/Kickstarter-iOS/Tests/Views/ActivitiesViewControllerTests.swift – Christopher
與大多數情況一樣,可以通過命令點擊操作員來查看他們的聲明。 – Alexander