nCalc总和所有给定的参数

时间:2014-09-17 12:05:59

标签: c# ncalc

我正在开发一个利用nCalc进行计算的项目。这些计算也将包含一些function.g。:sum(),avg()等。非常像Excel函数:sum()将汇总括号中提供的所有数字,avg将进行平均。

我已经开始实施一些更改,但我甚至不确定我是否在正确的位置开始。但是,如果我开始在正确的位置,那么我需要做的是访问参数,以便我可以迭代和总结它们。

到目前为止,我已在EvaluationVisitor.cs中创建了一个新案例,如下所示:

case "sum":
                CheckCase("sum", function.Identifier.Name);


                if (function.Expressions.Length != 3) { 
                    throw new ArgumentException("sum() takes exactly 3 arguments");
                }

                string sum = "";

                for (int i = 1; i < function.Expressions.Length; i++)
                {

                    //here comes the logic for getting all parameters and summing them.
                    //one thing I am not sure about is how to access input parameters 
                    sum = ...;

                }

                Result = sum;

                break;

我对C#和nCalc都很陌生,非常感谢一些帮助。

提前致谢!

1 个答案:

答案 0 :(得分:2)

请试一试。 将此代码添加到EvaluationVisitor.cs中的新开关案例(&#34; sum&#34;):

case "sum" :
    CheckCase("Sum", function.Identifier.Name);

                        object[] inputs = new object[function.Expressions.Length];
                        for (var i = 0; i < function.Expressions.Length; i++)
                        {
                            inputs[i] = Evaluate(function.Expressions[i]);
                        }

                        Result = Numbers.Sum(inputs);
break;

Numbers.cs文件中的新方法:

public static object Sum(params object[] inputs)
        {
            var sum = inputs[0];
            for (int i = 1; i < inputs.Length; i++)
            {
                sum = Add(sum,inputs[i]);
            }

            return sum;
        }