示例#1
0
        public void Square()
        {
            var input        = Reactive.Variable(1);
            var inputSquared = Reactive.Expression(() => input * input);

            inputSquared.Subscribe(getSquare => Console.WriteLine("square = " + getSquare())); // Prints 'square = 1'

            input.Value = 2;                                                                   //Prints 'square = 4'
            input.Value = 3;                                                                   //Prints 'square = 9'
        }
示例#2
0
        public void Composition()
        {
            var input      = Reactive.Variable(1);
            var timesTwo   = Reactive.Expression(() => input * 2);
            var timesThree = Reactive.Expression(() => input * 3);
            var sumOfBoth  = Reactive.Expression(() => timesTwo.Evaluate() + timesThree.Evaluate());

            sumOfBoth.Subscribe(getValue => Console.WriteLine("sumOfBoth = " + getValue())); //Prints 'sumOfBoth = 5'
            input.Value = 2;                                                                 //Prints 'sumOfBoth = 10'
            input.Value = 3;                                                                 //Prints 'sumOfBoth = 15'
        }
示例#3
0
        public void Precise()
        {
            var left        = Reactive.Variable(false);
            var right       = Reactive.Variable(false);
            var leftOrRight = Reactive.Expression(() => left || right);

            leftOrRight.Subscribe(getValue => Console.WriteLine("leftOrRight = " + getValue()));
            //Prints 'leftOrRight = False'

            right.Value = true;  //Prints 'leftOrRight = True'
            left.Value  = true;  //Prints 'leftOrRight = True'
            right.Value = false; //Prints nothing
        }
示例#4
0
        public void Cache()
        {
            var        input = Reactive.Variable(2); //We define a reactive variable.
            Func <int> f     = () =>                 //f is the calculation we want to cache.
            {
                Console.WriteLine("cache miss");
                return(input * input);       //f depends on our reactive variable 'input'.
            };
            var cache = Reactive.Cache(f);   //We base our cache on f.

            Assert.AreEqual(4, cache.Get()); //Prints 'cache miss'
            Assert.AreEqual(4, cache.Get()); //Cache hit.

            input.Value = 3;                 //Cache becomes stale.

            Assert.AreEqual(9, cache.Get()); //Prints 'cache miss'
            Assert.AreEqual(9, cache.Get()); //Cache hit.
        }