Ejemplo n.º 1
0
        /// <summary>
        /// Вычисляет описанную цепочкой функцию.
        /// </summary>
        /// <typeparam name="TA">Тип аргумента.</typeparam>
        /// <typeparam name="TV">Тип функции.</typeparam>
        /// <param name="last">Последний элемент цепочки.</param>
        /// <param name="argument">Аргумент функции.</param>
        /// <returns>Вычисленное значение.</returns>
        public static TV Compute <TA, TV>(this FunctionNode <TA, TV> last, TA argument)
        {
            if (last == null)
            {
                throw new ArgumentNullException("last");
            }

            return(last.ComputeFunction(argument));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Завершает цепочку описания функции и вычисляет ее.
        /// </summary>
        /// <typeparam name="TA">Тип аргумента.</typeparam>
        /// <typeparam name="TV">Тип функции.</typeparam>
        /// <param name="previous">Предыдущий элемент цепочки.</param>
        /// <param name="value">Значение по умолчанию.</param>
        /// <param name="argument">Аргумент функции.</param>
        /// <returns>Вычисленное значение.</returns>
        public static TV Otherwise <TA, TV>(this FunctionNode <TA, TV> previous, TV value, TA argument)
        {
            var last = new FunctionNode <TA, TV>(previous, value);

            try
            {
                return(last.ComputeFunction(argument));
            }
            catch    //    handled
            {
                return(value);
            }
        }