当前位置:网站首页>Dynamic analysis and calculation of expression, flee is really sweet to use

Dynamic analysis and calculation of expression, flee is really sweet to use

2022-06-26 02:22:00 Dotnet cross platform

Preface

In many projects, there are often scenarios that require dynamic parsing of expressions and calculations , For example, some automatic approval rules , Or the values of some variables are dynamically calculated during operation through the maintained formula ; Due to scenario requirements , You need to configure the corresponding expression flexibly , Then I hope to calculate the corresponding value according to the maintained expression when necessary ; When I was chatting with my colleagues, I said Flee, I think it works very well , Hurry to share a wave with your friends .

Text

1. Flee brief introduction

Flee Is a . net Framework's expression parser and evaluator , You can evaluate string expressions at run time ( Such as :sqrt(a^2 + b^2), among a、b It's a variable. ). Its parsing and computing speed is relatively fast and efficient .

Flee Support Net6.0、Net5.0、Netstandard2.1、Netstandard2.0.

Not much else , Let's go directly to a few examples to experience a wave , For more details, you can go to github Look up :

github Address :https://github.com/mparlak/Flee

2. Case presentation

The case is demonstrated through the console , On the installation Flee Bag can .

c9c6d5e4feee7db148dbb61bb7a12c1c.png
2.1 Super simple case

There are specific comments in the code , I won't go into details here , The screenshot is as follows :

0c291e28d0ec318689877c06e54bee0e.png

The content of this simple expression has been determined , All are computable , No variables .

Application scenarios 1: Expression fixed , A scene calculated directly by splicing the corresponding values .

Application scenarios 2: The expression is not fixed , However, some variable values are marked with special characters during formula maintenance , Then find the marked variable in the form of regular expression , And replace with the corresponding business field value .

Such as :[a]+[b]+3.14, In this case, the variables marked with brackets can be found through regular expressions , Then we can calculate by replacing the corresponding value with the name of the corresponding intermediate variable .

2.2 Expressions with variables

There are specific comments in the code , I won't go into details here , The screenshot is as follows :

5a3986d05aa6e165c252152485aff729.png

This form with variables is relatively flexible , It can be configured at will , Just attach values to the corresponding variables during calculation . There may be some questions from my friends , How to adjust variable uncertainty , In fact, in the actual application scenario , You should know the variables that need to be passed in many times , Just dynamically transfer values according to the rules of the formula .

Application scenarios : It is different from the simple case , No special tag variables are required , Here, you can directly maintain the formula and transfer values normally . This situation is relatively flexible , Corresponding formulas can be configured for related businesses , The last pass is the corresponding variable for calculation , Finally, relevant business processing can be carried out according to the calculated value .

2.3 Expression combination

CalculationEngine You can combine expressions , The calculation engine will use the results of other expressions inside the engine 、 Dependency relationship , Then calculate the combined results in sequence .

6b4152914075ed0cef28f68d0dd7b935.png

Application scenarios : This is generally used in scenarios with multiple expressions , Is similar to the Excel The same expression in multiple cells in , Every cell has an expression , Then one cell will reference the value calculated by the expression in other cells , Finally, the result .

2.4 spread function

Sometimes computing logic is encapsulated in a project , Just pass in the required value , There is no need for each caller to rewrite the relevant calculation logic ,Flee It also supports the combination of custom functions in expressions , The demonstration is as follows :

First, write the relevant methods in a class , The method here must be static 、 Public , as follows :

a797bb7f657482ad4b61835da489c167.png

Then you can use it in the expression , as follows :

312758dd5285d1266c6b4e7f7a7548cf.png
2.5 Functions that support variable arguments

It is used in the same way as above , Customize a method , Only the parameters of this method are uncertain , Variable , as follows :

280b385c115c71d079b19ede68b936bb.png

Use... In expressions :

6df68e11ce86d7f37a863b66ade85e00.png
2.6 The return value is Boolean Expression of type

In practical application scenarios , Sometimes you just need to get a yes no result , It may not be necessary to calculate a specific value ;

ea91fe4177b0f6364ca6690623691d44.png

Application scenarios : This situation is generally used for the requirements of some automatic decision rules , For example, the results of some reports have a range of values for different business types , If it is out of range, it means non-compliance , If you rely on human judgment, it may not be so efficient ; Similar to this case of comparative data , If it is only a simple comparison, it is easy to realize , If it is a more complicated relationship comparison , This method is relatively flexible .

Okay , For the time being, let's talk about how to use it , The pictures in this article already contain all the codes . I will also submit the code later github And code cloud .

summary

The above is just a few simple examples , Specific partners can use it according to business scenarios . If you have a better tool library , Comments are welcome , Learning together .

Focus on “Code Variety industry ”, Study with me .

原网站

版权声明
本文为[Dotnet cross platform]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/177/202206260036254863.html