Skip to content

Commit 389ee72

Browse files
author
linzhijun
committed
防止歧义,修改 and or 判断
1 parent 5618e1f commit 389ee72

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

csharp/ToolGood.Algorithm/Internals/Functions/FunctionBase.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -913,9 +913,9 @@ public override Operand Evaluate(AlgorithmEngine work, Func<AlgorithmEngine, str
913913
return Operand.Create(args1.NumberValue == args2.NumberValue);
914914
} else if(args1.IsText) {
915915
return Operand.Create(args1.TextValue == args2.TextValue);
916-
} else if (args1.IsBoolean) {
916+
} else if(args1.IsBoolean) {
917917
return Operand.Create(args1.BooleanValue == args2.BooleanValue);
918-
} else if(args1.IsDate ) {
918+
} else if(args1.IsDate) {
919919
args1 = args1.ToNumber();
920920
args2 = args2.ToNumber();
921921
return Operand.Create(args1.NumberValue == args2.NumberValue);
@@ -977,7 +977,7 @@ public override Operand Evaluate(AlgorithmEngine work, Func<AlgorithmEngine, str
977977
return Operand.Create(args1.NumberValue != args2.NumberValue);
978978
} else if(args1.IsText) {
979979
return Operand.Create(args1.TextValue != args2.TextValue);
980-
} else if (args1.IsBoolean) {
980+
} else if(args1.IsBoolean) {
981981
return Operand.Create(args1.BooleanValue != args2.BooleanValue);
982982
} else if(args1.IsDate) {
983983
args1 = args1.ToNumber();
@@ -1307,7 +1307,11 @@ public override Operand Evaluate(AlgorithmEngine work, Func<AlgorithmEngine, str
13071307
// 在程序中,&& and 有true 直接返回true 就不会检测下一个会不会报错
13081308
// 在程序中,|| or 有false 直接返回false 就不会检测下一个会不会报错
13091309
var args1 = func1.Evaluate(work, tempParameter); if(args1.IsNotBoolean) { args1 = args1.ToBoolean(); if(args1.IsError) { return args1; } }
1310-
if(args1.BooleanValue == false) return Operand.False;
1310+
if(args1.BooleanValue == false) {
1311+
var args2 = func2.Evaluate(work, tempParameter).ToBoolean();
1312+
if(args2.IsError) { return args2; }
1313+
return Operand.False;
1314+
}
13111315
return func2.Evaluate(work, tempParameter).ToBoolean();
13121316
}
13131317
public override void ToString(StringBuilder stringBuilder, bool addBrackets)
@@ -1333,7 +1337,11 @@ public override Operand Evaluate(AlgorithmEngine work, Func<AlgorithmEngine, str
13331337
// 在程序中,&& and 有true 直接返回true 就不会检测下一个会不会报错
13341338
// 在程序中,|| or 有false 直接返回false 就不会检测下一个会不会报错
13351339
var args1 = func1.Evaluate(work, tempParameter); if(args1.IsNotBoolean) { args1 = args1.ToBoolean(); if(args1.IsError) { return args1; } }
1336-
if(args1.BooleanValue) return Operand.True;
1340+
if(args1.BooleanValue) {
1341+
var args2 = func2.Evaluate(work, tempParameter).ToBoolean();
1342+
if(args2.IsError) { return args2; }
1343+
return Operand.True;
1344+
}
13371345
return func2.Evaluate(work, tempParameter).ToBoolean();
13381346
}
13391347

csharp/ToolGood.Algorithm/ToolGood.Algorithm.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<Product>ToolGood.Algorithm</Product>
2020
<PackageLicenseFile>LICENSE</PackageLicenseFile>
2121
<SignAssembly>true</SignAssembly>
22-
<Version>6.0.0.3</Version>
22+
<Version>6.0.0.5</Version>
2323
<AssemblyOriginatorKeyFile>ToolGood.Algorithm.snk</AssemblyOriginatorKeyFile>
2424
<DelaySign>false</DelaySign>
2525
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\ToolGood.Algorithm.xml</DocumentationFile>

0 commit comments

Comments
 (0)