NCalc 学习笔记

Posted 一只奋斗的小小鸟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NCalc 学习笔记相关的知识,希望对你有一定的参考价值。

参数

静态参数

静态参数可以在表达式求值前定义。用方括号括起来表示为静态参数。
可以通过 Expression 对象中名为 Parameters 的字典来访问静态参数。

Expression e = new Expression("2 * [x] ^ 2 + 5 * [y]");
e.Parameters["x"] = 5;
e.Parameters["y"] = 1;

Console.WriteLine(e.Evaluate());

参数十分有用,有些编译时不知道的值可以在运行时再进行赋值。或者在性能显得十分重要时,可以用参数来保存中间结果。

表达式参数

一个表达式可以由多个表达式通过表达式参数连接起来。简单来说就是把表达式当参数用。

Expression volume = new Expression("[surface] * h");
Expression surface = new Expression("[l] * [L]");
volume.Parameters["surface"] = surface;
surface.Parameters["l"] = 1;
surface.Parameters["L"] = 2;

动态参数

有的时候参数可能很复杂而需要用一个专用的方法来进行求值。我们可以使用 Expression 对象提供的 EvaluateParameter 事件。这样,当某个参数无法再字典中找到时,NCalc 就会尝试调用 EvaluateParameter 事件来解决这个问题。

方括号参数

用方括号括起来的参数可以支持 , .,并且支持数字开头的参数。

 Expression e = new Expression("[1My First Parameter] + [2My Second Parameter]");

多值参数

如果参数是 IEnumerable 类型,并且使用了 EvaluationOptions.IterateParameters 选项,那么求值结果是一个 IList 类型的对象。

Expression e = new Expression("(a * b) ^ c", EvaluateOptions.IterateParameters);
e.Parameters["a"] = new int[]  1, 2, 3, 4, 5 ;
e.Parameters["b"] = new int[]  6, 7, 8, 9, 0 ;
e.Parameters["c"] = 3;

foreach (var result in (IEnumerable)e.Evaluate())

    Console.WriteLine(result);


// 5
// 13
// 27
// 39
// 3

注: ^ 并不是幂乘符号,它代表的是异或。


参考链接

NCalc - Mathematical Expressions Evaluator for .NET

以上是关于NCalc 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb学习笔记总结 目录篇

系列文章--Node.js学习笔记系列

Windows编程课程学习笔记

Windows编程课程学习笔记

2022年Spark基础学习笔记

SpringBoot学习笔记——Thymeleaf