/**
This method creates a new observable instance
with a variable number of elements.
see also:http://reactivex.io/documentation/operators/from.html
- parameter elements: Elements to generate
- parameter scheduler: Scheduler to send elements on.
If 'nil', elements are sent immediately on subscription
- returns: The observable sequence whose elements are pulled from the given arguments.
*/
public static func of(elements: E ..., scheduler: ImmediateSchedulerType? = nil)->Observable<E> {
return Sequence(elements: elements, scheduler: scheduler)
}
class Sequence<E>: Producer<E> {
private let _elements: [E]
private let _scheduler: ImmediateSchedulerType?
init(elements: [E], scheduler: ImmediateSchedulerType?) {
_elements = elements
_scheduler = scheduler
}
override func subscribe<O: ObserverType where O.E == E>(observer: O)->Disposable {
// optimized version without scheduler
guard _scheduler != nil else {
for element in _elements {
observer.on(.Next(element))
}
observer.on(.Completed)
return NoDisposable.instance
}
let sink = SequenceSink(parent: self, observer: observer)
sink.disposable = sink.run()
return sink
}
}
class SequenceSink<O: ObserverType>: Sink<O> {
typealias Parent = Sequence<O.E>
private let _parent: Parent
init(parent: Parent, observer: O) {
_parent = parent
super.init(observer: observer)
}
func run()->Disposable {
return _parent._scheduler!.scheduleRecursive( (0, _parent._elements)) { (state, recurse) in
if state.0 < state.1.count {
self.forwardOn(.Next(state.1[state.0]))
recurse((state.0 + 1, state.1))
}else {
self.forwardOn(.Completed)
}
}
}
}
of運算
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 1. 賦值運算符 "=" Swift賦值語句不可作為條件判斷語句 2.基礎(chǔ)運算符 "+ - * / %" 3.單目...
- 一元運算符 delete delete 運算符刪除對以前定義的對象屬性或方法的引用。例如: delete運算符不能...
- 匯總區(qū): 三組共9人 應(yīng)交作業(yè)人數(shù)8人,準時提交人數(shù)7人,遲提交1人。 應(yīng)點評人數(shù)8人,準時點評人數(shù)7人,遲點評1...