Skip to content

Commit 8ac6e65

Browse files
committed
fix
1 parent 2e2917b commit 8ac6e65

File tree

8 files changed

+280
-1446
lines changed

8 files changed

+280
-1446
lines changed

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

Lines changed: 69 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,7 @@ public override string ToString()
3838
/// <param name="stringBuilder">The StringBuilder to which the string representation will be appended. Cannot be null.</param>
3939
/// <param name="addBrackets">true to enclose the string representation in brackets; otherwise, false.</param>
4040
public abstract void ToString(StringBuilder stringBuilder, bool addBrackets);
41-
42-
4341
}
44-
4542

4643
internal abstract class Function_1 : FunctionBase
4744
{
@@ -51,6 +48,13 @@ protected Function_1(FunctionBase func1)
5148
{
5249
this.func1 = func1;
5350
}
51+
protected void AddFunction(StringBuilder stringBuilder, string functionName)
52+
{
53+
stringBuilder.Append(functionName);
54+
stringBuilder.Append("(");
55+
func1.ToString(stringBuilder, false);
56+
stringBuilder.Append(')');
57+
}
5458
}
5559

5660
internal abstract class Function_2 : FunctionBase
@@ -63,8 +67,19 @@ public Function_2(FunctionBase func1, FunctionBase func2)
6367
this.func1 = func1;
6468
this.func2 = func2;
6569
}
66-
}
6770

71+
protected void AddFunction(StringBuilder stringBuilder,string functionName)
72+
{
73+
stringBuilder.Append(functionName);
74+
stringBuilder.Append("(");
75+
func1.ToString(stringBuilder, false);
76+
if (func2 != null) {
77+
stringBuilder.Append(", ");
78+
func2.ToString(stringBuilder, false);
79+
}
80+
stringBuilder.Append(')');
81+
}
82+
}
6883

6984
internal abstract class Function_3 : FunctionBase
7085
{
@@ -78,6 +93,21 @@ protected Function_3(FunctionBase func1, FunctionBase func2, FunctionBase func3)
7893
this.func2 = func2;
7994
this.func3 = func3;
8095
}
96+
protected void AddFunction(StringBuilder stringBuilder, string functionName)
97+
{
98+
stringBuilder.Append(functionName);
99+
stringBuilder.Append("(");
100+
func1.ToString(stringBuilder, false);
101+
if (func2 != null) {
102+
stringBuilder.Append(", ");
103+
func2.ToString(stringBuilder, false);
104+
if (func3 != null) {
105+
stringBuilder.Append(", ");
106+
func3.ToString(stringBuilder, false);
107+
}
108+
}
109+
stringBuilder.Append(')');
110+
}
81111
}
82112

83113
internal abstract class Function_4 : FunctionBase
@@ -94,6 +124,25 @@ protected Function_4(FunctionBase func1, FunctionBase func2, FunctionBase func3,
94124
this.func3 = func3;
95125
this.func4 = func4;
96126
}
127+
protected void AddFunction(StringBuilder stringBuilder, string functionName)
128+
{
129+
stringBuilder.Append(functionName);
130+
stringBuilder.Append("(");
131+
func1.ToString(stringBuilder, false);
132+
if (func2 != null) {
133+
stringBuilder.Append(", ");
134+
func2.ToString(stringBuilder, false);
135+
if (func3 != null) {
136+
stringBuilder.Append(", ");
137+
func3.ToString(stringBuilder, false);
138+
if (func4 != null) {
139+
stringBuilder.Append(", ");
140+
func4.ToString(stringBuilder, false);
141+
}
142+
}
143+
}
144+
stringBuilder.Append(')');
145+
}
97146
}
98147

99148
internal abstract class Function_N : FunctionBase
@@ -104,6 +153,19 @@ protected Function_N(FunctionBase[] funcs)
104153
{
105154
this.funcs = funcs;
106155
}
156+
157+
protected void AddFunction(StringBuilder stringBuilder, string functionName)
158+
{
159+
stringBuilder.Append(functionName);
160+
stringBuilder.Append("(");
161+
for (int i = 0; i < funcs.Length; i++) {
162+
if (i > 0) {
163+
stringBuilder.Append(", ");
164+
}
165+
funcs[i].ToString(stringBuilder, false);
166+
}
167+
stringBuilder.Append(')');
168+
}
107169
}
108170

109171

@@ -925,14 +987,7 @@ public override Operand Calculate(AlgorithmEngine work)
925987

926988
public override void ToString(StringBuilder stringBuilder, bool addBrackets)
927989
{
928-
stringBuilder.Append("AND(");
929-
for (int i = 0; i < funcs.Length; i++) {
930-
if (i > 0) {
931-
stringBuilder.Append(", ");
932-
}
933-
funcs[i].ToString(stringBuilder, false);
934-
}
935-
stringBuilder.Append(')');
990+
AddFunction(stringBuilder, "AND");
936991
}
937992
}
938993

@@ -955,14 +1010,7 @@ public override Operand Calculate(AlgorithmEngine work)
9551010
}
9561011
public override void ToString(StringBuilder stringBuilder, bool addBrackets)
9571012
{
958-
stringBuilder.Append("OR(");
959-
for (int i = 0; i < funcs.Length; i++) {
960-
if (i > 0) {
961-
stringBuilder.Append(", ");
962-
}
963-
funcs[i].ToString(stringBuilder, false);
964-
}
965-
stringBuilder.Append(')');
1013+
AddFunction(stringBuilder, "OR");
9661014
}
9671015
}
9681016

@@ -1060,14 +1108,7 @@ public override Operand Calculate(AlgorithmEngine work)
10601108
}
10611109
public override void ToString(StringBuilder stringBuilder, bool addBrackets)
10621110
{
1063-
stringBuilder.Append("VLOOKUP(");
1064-
for (int i = 0; i < funcs.Length; i++) {
1065-
if (i > 0) {
1066-
stringBuilder.Append(", ");
1067-
}
1068-
funcs[i].ToString(stringBuilder, false);
1069-
}
1070-
stringBuilder.Append(')');
1111+
AddFunction(stringBuilder, "VLOOKUP");
10711112
}
10721113
}
10731114

0 commit comments

Comments
 (0)