如何使用 Nreco LambdaParser 包解析带按位运算符的字符串表达式?
How to parse a string expression with bitwise operators using Nreco LambdaParser package?
我有以下代码,但它无法编译,我试图在使用 Nreco lambda 解析器包时查找有关按位运算符的任何信息,但我没有找到示例。
var lambdaParser = new NReco.Linq.LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["numA"] = 3;
var varResult = lambdaParser.Eval("(numA & 1) == 1 ? true : false", varContext);
Console.WriteLine(varResult);
NReco.LambdaParser 不支持按位 AND/OR 运算(“&&”/"and" 均表示布尔与)。但是,您可以根据需要向 varContext 添加辅助函数:
varContext["BitAnd"] = (Func<int, int, int>)((a, b) => v & b);
var varResult = lambdaParser.Eval("BitAnd(numA, 1) == 1 ? true : false", varContext);
甚至
varContext["CheckBit"] = (Func<int, int, bool>)((a, b) => (v & b) == b);
var varResult = lambdaParser.Eval("CheckBit(numA, 1) ? true : false", varContext);
此方法允许您扩展 LambdaParser 以获得表达式中所需的函数。
我有以下代码,但它无法编译,我试图在使用 Nreco lambda 解析器包时查找有关按位运算符的任何信息,但我没有找到示例。
var lambdaParser = new NReco.Linq.LambdaParser();
var varContext = new Dictionary<string, object>();
varContext["numA"] = 3;
var varResult = lambdaParser.Eval("(numA & 1) == 1 ? true : false", varContext);
Console.WriteLine(varResult);
NReco.LambdaParser 不支持按位 AND/OR 运算(“&&”/"and" 均表示布尔与)。但是,您可以根据需要向 varContext 添加辅助函数:
varContext["BitAnd"] = (Func<int, int, int>)((a, b) => v & b);
var varResult = lambdaParser.Eval("BitAnd(numA, 1) == 1 ? true : false", varContext);
甚至
varContext["CheckBit"] = (Func<int, int, bool>)((a, b) => (v & b) == b);
var varResult = lambdaParser.Eval("CheckBit(numA, 1) ? true : false", varContext);
此方法允许您扩展 LambdaParser 以获得表达式中所需的函数。