public static void Run() { var sensorReading = new BehaviorSubject <double>(-1.0); sensorReading.Inspect("sensor"); sensorReading.OnNext(0.99); }
static void MainCS(string[] args) { // CombineLatest var mechanical = new BehaviorSubject <bool>(true); var electrical = new BehaviorSubject <bool>(true); var electronic = new BehaviorSubject <bool>(true); mechanical.Inspect("mechanical"); electrical.Inspect("electrical"); electronic.Inspect("electronic"); Observable.CombineLatest(mechanical, electrical, electronic) .Select(values => values.All(x => x)) .Inspect("Is the system OK?"); mechanical.OnNext(false); var digits = Observable.Range(0, 10); var letters = Observable.Range(0, 10).Select(x => (char)('A' + x)); letters.Zip(digits, (letter, digit) => $"{letter}{digit}") .Inspect("Zip"); // And returns Pattern<T1, T2> whose properties are internal var punctuation = "!@#$%^&*()".ToCharArray().ToObservable(); Observable.When( // Plan<> and all that digits .And(letters) .And(punctuation) .Then((digit, letter, symbol) => $"{digit}{letter}{symbol}") ) .Inspect("And-Then-When"); }
public static void Main(string[] args) { var mechanical = new BehaviorSubject <bool>(true); var electrical = new BehaviorSubject <bool>(true); var electronic = new BehaviorSubject <bool>(true); mechanical.Inspect("Mechanical"); electrical.Inspect("Electrical"); electronic.Inspect("Electronic"); Observable.CombineLatest(mechanical, electrical, electronic).Select(values => values.All(x => x)) .Inspect("Is System OK?"); mechanical.OnNext(false); var digits = Observable.Range(0, 10); var letters = Observable.Range(0, 10).Select(x => (char)('A' + x)); var punctuation = "!@#$%^&*()".ToCharArray().ToObservable(); letters.Zip(digits, (letter, digit) => $"{letter}{digit}").Inspect("Zip"); Observable.When( digits.And(letters).And(punctuation). Then(((digit, letter, symbol) => $"{digit}{letter}{symbol}")) ).Inspect("And-Then-When"); var s1 = Observable.Range(1, 3); var s2 = Observable.Range(4, 3); s1.Concat(s2).Inspect("Concat"); s1.StartWith(2, 1, 0).Inspect("StartWith"); var seq1 = new Subject <int>(); var seq2 = new Subject <int>(); var seq3 = new Subject <int>(); seq1.Amb(seq2).Amb(seq3).Inspect("Amb"); seq2.OnNext(23); seq1.OnNext(1, 2, 3); seq2.OnNext(10, 20, 30); seq3.OnNext(100, 200, 300); var foo = new Subject <long>(); var bar = new Subject <long>(); var baz = Observable.Interval(TimeSpan.FromSeconds(0.5)).Take(5); foo.Merge(bar).Merge(baz).Inspect("Merge"); foo.OnNext(100); Thread.Sleep(1000); bar.OnNext(10); Thread.Sleep(1000); foo.OnNext(1000); Thread.Sleep(1000); }
public static void Main(string[] args) { var sensorReader = new BehaviorSubject <double>(-1.0); sensorReader.Inspect("Sensor"); sensorReader.OnNext(0.99); sensorReader.OnCompleted(); }
static void WithBehaviourSubject() { var market = new BehaviorSubject <float>(1); market.Inspect("market"); market.OnNext(2); market.OnCompleted(); }
static void Main(string[] args) { var sensorReading = new BehaviorSubject <double>(-1.0); //到这一步的时候,就是默认值-1 sensorReading.Inspect("sensor"); sensorReading.OnNext(0.99); sensorReading.OnCompleted(); }
public static void Sequence_Combinators() { // CombineLatest var mechanical = new BehaviorSubject <bool>(true); var electrical = new BehaviorSubject <bool>(true); var electronic = new BehaviorSubject <bool>(true); mechanical.Inspect("mechanical"); electrical.Inspect("electrical"); electronic.Inspect("electronic"); Observable.CombineLatest(mechanical, electrical, electronic) .Select(values => values.All(x => x)) .Inspect("Is the system OK?"); mechanical.OnNext(false); PressAnyKey(); var digits = Observable.Range(0, 10); var letters = Observable.Range(0, 10).Select(x => (char)('A' + x)); letters.Zip(digits, (letter, digit) => $"{letter}{digit}") .Inspect("Zip"); // And returns Pattern<T1, T2> whose properties are internal var punctuation = "!@#$%^&*()".ToCharArray().ToObservable(); Observable.When( // Plan<> and all that digits .And(letters) .And(punctuation) .Then((digit, letter, symbol) => $"{digit}{letter}{symbol}") ) .Inspect("And-Then-When"); PressAnyKey(); // Concat merges all the sequences into one var s1 = Observable.Range(1, 3); var s2 = Observable.Range(4, 3); s2.Concat(s1).Inspect("Concat"); // Repeat repeats the sequence as often as is necessary s1.Repeat(3).Inspect("Repeat"); s1.StartWith(2, 1, 0).Inspect("StartWith"); PressAnyKey(); // Amb(iguous) // will return a value from the sequence that first produces a value // will ignore values from all other sequences var seq1 = new Subject <int>(); var seq2 = new Subject <int>(); var seq3 = new Subject <int>(); seq1.Amb(seq2).Amb(seq3).Inspect("Amb"); seq1.OnNext(1); // comment this out seq2.OnNext(2); seq3.OnNext(3); seq1.OnNext(1); seq2.OnNext(2); seq3.OnNext(3); seq1.OnCompleted(); seq2.OnCompleted(); seq3.OnCompleted(); PressAnyKey(); // Merge pairs up values from multiple sequences var foo = new Subject <long>(); var bar = new Subject <long>(); var baz = Observable.Interval(TimeSpan.FromMilliseconds(500)).Take(5); foo.Merge(bar).Merge(baz).Inspect("Merge"); foo.OnNext(100); Thread.Sleep(1000); bar.OnNext(10); Thread.Sleep(1000); foo.OnNext(1000); Thread.Sleep(1000); }
public static void Main_CS(string[] args) { // Combine latest var mechanical = new BehaviorSubject <bool>(true); var electrical = new BehaviorSubject <bool>(true); var electronic = new BehaviorSubject <bool>(true); mechanical.Inspect("mechanical"); electrical.Inspect("electrical"); electronic.Inspect("electronic"); Observable.CombineLatest(mechanical, electrical, electronic) .Select(values => values.All(x => x)) .Inspect("Is the system ok?"); mechanical.OnNext(false); Console.ReadLine(); // Zip var digits = Observable.Range(0, 10); var letters = Observable.Range(0, 10) .Select(x => (char)('A' + x)); var zip = letters.Zip(digits, (letter, digit) => $"{letter}{digit}"); zip.Inspect("zip"); Console.ReadLine(); // And combine with Observable.When var passwords = "!@#$%^&*()_+".ToCharArray().ToObservable(); var and = Observable.When(passwords.And(letters).And(digits) .Then((digit, letter, symbol) => $"{digit}{letter}{symbol}") ); and.Inspect("and"); Console.ReadLine(); // Concat, Repeat, Start With var s1 = Observable.Range(1, 3); var s2 = Observable.Range(4, 3); s1.Concat(s2).Repeat(2).StartWith(-1, 0).Inspect("Concat + repeat + StartWith (-1, 0)"); Console.ReadLine(); // Amb: emit all of the items from only first Observable // discard others var seq1 = new Subject <int>(); var seq2 = new Subject <int>(); var seq3 = new Subject <int>(); var amb = seq1.Amb(seq2).Amb(seq3); amb.Inspect("amb"); seq3.OnNext(0); // result 0 7 8 9 seq1.OnNext(1, 2, 3); seq2.OnNext(4, 5, 6); seq3.OnNext(7, 8, 9); // Merge var foo = new Subject <long>(); var bar = new Subject <long>(); var baz = Observable.Interval(TimeSpan.FromSeconds(0.5)).Take(5); foo.Merge(bar).Merge(baz).Inspect("Merge"); foo.OnNext(100); Thread.Sleep(1000); bar.OnNext(10); Thread.Sleep(1000); foo.OnNext(1000); Thread.Sleep(1000); }