Skip to content

Commit

Permalink
Update examples and playgrounds
Browse files Browse the repository at this point in the history
  • Loading branch information
nikolaykasyanov committed Oct 11, 2024
1 parent 99e786d commit 2c8982a
Show file tree
Hide file tree
Showing 32 changed files with 224 additions and 224 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ Emits the specified sequence of elements before beginning to emit the elements f
![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/startwith.png)
*/
example("startWith") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.of("🐶", "🐱", "🐭", "🐹")
.startWith("1️⃣")
.startWith("2️⃣")
.startWith("3️⃣", "🅰️", "🅱️")
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
> As this example demonstrates, `startWith` can be chained on a last-in-first-out basis, i.e., each successive `startWith`'s elements will be prepended before the prior `startWith`'s elements.
Expand All @@ -33,15 +33,15 @@ example("startWith") {
![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/merge.png)
*/
example("merge") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let subject1 = PublishSubject<String>()
let subject2 = PublishSubject<String>()

Observable.of(subject1, subject2)
.merge()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)

subject1.onNext("🅰️")

Expand All @@ -62,7 +62,7 @@ example("merge") {
![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/zip.png)
*/
example("zip") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let stringSubject = PublishSubject<String>()
let intSubject = PublishSubject<Int>()
Expand All @@ -71,7 +71,7 @@ example("zip") {
"\(stringElement) \(intElement)"
}
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)

stringSubject.onNext("🅰️")
stringSubject.onNext("🅱️")
Expand All @@ -90,7 +90,7 @@ example("zip") {
![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/combinelatest.png)
*/
example("combineLatest") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let stringSubject = PublishSubject<String>()
let intSubject = PublishSubject<Int>()
Expand All @@ -99,7 +99,7 @@ example("combineLatest") {
"\(stringElement) \(intElement)"
}
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)

stringSubject.onNext("🅰️")

Expand All @@ -112,7 +112,7 @@ example("combineLatest") {
}
//: There is also a variant of `combineLatest` that takes an `Array` (or any other collection of `Observable` sequences):
example("Array.combineLatest") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let stringObservable = Observable.just("❤️")
let fruitObservable = Observable.from(["🍎", "🍐", "🍊"])
Expand All @@ -122,7 +122,7 @@ example("Array.combineLatest") {
"\($0[0]) \($0[1]) \($0[2])"
}
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
> Because the `combineLatest` variant that takes a collection passes an array of values to the selector function, it requires that all source `Observable` sequences are of the same type.
Expand All @@ -132,7 +132,7 @@ example("Array.combineLatest") {
![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/switch.png)
*/
example("switchLatest") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let subject1 = BehaviorSubject(value: "⚽️")
let subject2 = BehaviorSubject(value: "🍎")
Expand All @@ -142,7 +142,7 @@ example("switchLatest") {
subjectsSubject.asObservable()
.switchLatest()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)

subject1.onNext("🏈")
subject1.onNext("🏀")
Expand All @@ -161,15 +161,15 @@ example("switchLatest") {
Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any.
*/
example("withLatestFrom") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let foodSubject = PublishSubject<String>()
let drinksSubject = PublishSubject<String>()

foodSubject.asObservable()
.withLatestFrom(drinksSubject) { "\($0) + \($1)" }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)

foodSubject.onNext("🥗")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,29 @@ import RxSwift
Creates a sequence that never terminates and never emits any events. [More info](http://reactivex.io/documentation/operators/empty-never-throw.html)
*/
example("never") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()
let neverSequence = Observable<String>.never()

let neverSequenceSubscription = neverSequence
.subscribe { _ in
print("This will never be printed")
}

neverSequenceSubscription.disposed(by: disposeBag)
neverSequenceSubscription.disposed(by: &disposeBag)
}
/*:
----
## empty
Creates an empty `Observable` sequence that only emits a Completed event. [More info](http://reactivex.io/documentation/operators/empty-never-throw.html)
*/
example("empty") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable<Int>.empty()
.subscribe { event in
print(event)
}
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
> This example also introduces chaining together creating and subscribing to an `Observable` sequence.
Expand All @@ -46,27 +46,27 @@ example("empty") {
Creates an `Observable` sequence with a single element. [More info](http://reactivex.io/documentation/operators/just.html)
*/
example("just") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.just("🔴")
.subscribe { event in
print(event)
}
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
## of
Creates an `Observable` sequence with a fixed number of elements.
*/
example("of") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.of("🐶", "🐱", "🐭", "🐹")
.subscribe(onNext: { element in
print(element)
})
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
> This example also introduces using the `subscribe(onNext:)` convenience method. Unlike `subscribe(_:)`, which subscribes an _event_ handler for all event types (Next, Error, and Completed), `subscribe(onNext:)` subscribes an _element_ handler that will ignore Error and Completed events and only produce Next event elements. There are also `subscribe(onError:)` and `subscribe(onCompleted:)` convenience methods, should you only want to subscribe to those event types. And there is a `subscribe(onNext:onError:onCompleted:onDisposed:)` method, which allows you to react to one or more event types and when the subscription is terminated for any reason, or disposed, in a single call:
Expand All @@ -83,11 +83,11 @@ example("of") {
Creates an `Observable` sequence from a `Sequence`, such as an `Array`, `Dictionary`, or `Set`.
*/
example("from") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.from(["🐶", "🐱", "🐭", "🐹"])
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
> This example also demonstrates using the default argument name `$0` instead of explicitly naming the argument.
Expand All @@ -96,8 +96,8 @@ example("from") {
Creates a custom `Observable` sequence. [More info](http://reactivex.io/documentation/operators/create.html)
*/
example("create") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

let myJust = { (element: String) -> Observable<String> in
return Observable.create { observer in
observer.on(.next(element))
Expand All @@ -108,32 +108,32 @@ example("create") {

myJust("🔴")
.subscribe { print($0) }
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
## range
Creates an `Observable` sequence that emits a range of sequential integers and then terminates. [More info](http://reactivex.io/documentation/operators/range.html)
*/
example("range") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.range(start: 1, count: 10)
.subscribe { print($0) }
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
## repeatElement
Creates an `Observable` sequence that emits the given element indefinitely. [More info](http://reactivex.io/documentation/operators/repeat.html)
*/
example("repeatElement") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.repeatElement("🔴")
.take(3)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
> This example also introduces using the `take` operator to return a specified number of elements from the start of a sequence.
Expand All @@ -142,23 +142,23 @@ example("repeatElement") {
Creates an `Observable` sequence that generates values for as long as the provided condition evaluates to `true`.
*/
example("generate") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.generate(
initialState: 0,
condition: { $0 < 3 },
iterate: { $0 + 1 }
)
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
## deferred
Creates a new `Observable` sequence for each subscriber. [More info](http://reactivex.io/documentation/operators/defer.html)
*/
example("deferred") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()
var count = 1

let deferredSequence = Observable<String>.deferred {
Expand All @@ -176,36 +176,36 @@ example("deferred") {

deferredSequence
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)

deferredSequence
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
## error
Creates an `Observable` sequence that emits no items and immediately terminates with an error.
*/
example("error") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable<Int>.error(TestError.test)
.subscribe { print($0) }
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
## doOn
Invokes a side-effect action for each emitted event and returns (passes through) the original event. [More info](http://reactivex.io/documentation/operators/do.html)
*/
example("doOn") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

Observable.of("🍎", "🍐", "🍊", "🍋")
.do(onNext: { print("Intercepted:", $0) }, afterNext: { print("Intercepted after:", $0) }, onError: { print("Intercepted error:", $0) }, afterError: { print("Intercepted after error:", $0) }, onCompleted: { print("Completed") }, afterCompleted: { print("After completed") })
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
//: > There are also `doOnNext(_:)`, `doOnError(_:)`, and `doOnCompleted(_:)` convenience methods to intercept those specific events, and `doOn(onNext:onError:onCompleted:)` to intercept one or more events in a single call.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import RxSwift
Prints out all subscriptions, events, and disposals.
*/
example("debug") {
let disposeBag = DisposeBag()
var disposeBag = DisposeBag()
var count = 1

let sequenceThatErrors = Observable<String>.create { observer in
Expand All @@ -41,7 +41,7 @@ example("debug") {
.retry(3)
.debug()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
.disposed(by: &disposeBag)
}
/*:
----
Expand All @@ -53,7 +53,7 @@ example("debug") {
example("RxSwift.Resources.total") {
print(RxSwift.Resources.total)

let disposeBag = DisposeBag()
var disposeBag = DisposeBag()

print(RxSwift.Resources.total)

Expand Down
Loading

0 comments on commit 2c8982a

Please sign in to comment.