Skip to content

Commit 6f3fd7a

Browse files
author
dengsgo
committed
优化 代码结构
1 parent 0120846 commit 6f3fd7a

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed

engine/def.go

+23-23
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ var defFunC = map[string]int{
3535
"min": 2,
3636
}
3737

38-
var defFunc map[string]func(expr []ExprAST) float64
38+
var defFunc map[string]func(expr ...ExprAST) float64
3939

4040
func init() {
41-
defFunc = map[string]func(expr []ExprAST) float64{
41+
defFunc = map[string]func(expr ...ExprAST) float64{
4242
"sin": defSin,
4343
"cos": defCos,
4444
"tan": defTan,
@@ -61,83 +61,83 @@ func init() {
6161
}
6262

6363
// sin(pi/2) = 1
64-
func defSin(expr []ExprAST) float64 {
64+
func defSin(expr ...ExprAST) float64 {
6565
return math.Sin(expr2Radian(expr[0]))
6666
}
6767

6868
// cos(0) = 1
69-
func defCos(expr []ExprAST) float64 {
69+
func defCos(expr ...ExprAST) float64 {
7070
return math.Cos(expr2Radian(expr[0]))
7171
}
7272

7373
// tan(pi/4) = 1
74-
func defTan(expr []ExprAST) float64 {
74+
func defTan(expr ...ExprAST) float64 {
7575
return math.Tan(expr2Radian(expr[0]))
7676
}
7777

7878
// cot(pi/4) = 1
79-
func defCot(expr []ExprAST) float64 {
80-
return 1 / defTan(expr)
79+
func defCot(expr ...ExprAST) float64 {
80+
return 1 / defTan(expr...)
8181
}
8282

8383
// sec(0) = 1
84-
func defSec(expr []ExprAST) float64 {
85-
return 1 / defCos(expr)
84+
func defSec(expr ...ExprAST) float64 {
85+
return 1 / defCos(expr...)
8686
}
8787

8888
// csc(pi/2) = 1
89-
func defCsc(expr []ExprAST) float64 {
90-
return 1 / defSin(expr)
89+
func defCsc(expr ...ExprAST) float64 {
90+
return 1 / defSin(expr...)
9191
}
9292

9393
// abs(-2) = 2
94-
func defAbs(expr []ExprAST) float64 {
94+
func defAbs(expr ...ExprAST) float64 {
9595
return math.Abs(ExprASTResult(expr[0]))
9696
}
9797

9898
// ceil(4.2) = ceil(4.8) = 5
99-
func defCeil(expr []ExprAST) float64 {
99+
func defCeil(expr ...ExprAST) float64 {
100100
return math.Ceil(ExprASTResult(expr[0]))
101101
}
102102

103103
// floor(4.2) = floor(4.8) = 4
104-
func defFloor(expr []ExprAST) float64 {
104+
func defFloor(expr ...ExprAST) float64 {
105105
return math.Floor(ExprASTResult(expr[0]))
106106
}
107107

108108
// round(4.2) = 4
109109
// round(4.6) = 5
110-
func defRound(expr []ExprAST) float64 {
110+
func defRound(expr ...ExprAST) float64 {
111111
return math.Round(ExprASTResult(expr[0]))
112112
}
113113

114114
// sqrt(4) = 2
115-
func defSqrt(expr []ExprAST) float64 {
115+
func defSqrt(expr ...ExprAST) float64 {
116116
return math.Sqrt(ExprASTResult(expr[0]))
117117
}
118118

119119
// cbrt(27) = 3
120-
func defCbrt(expr []ExprAST) float64 {
120+
func defCbrt(expr ...ExprAST) float64 {
121121
return math.Cbrt(ExprASTResult(expr[0]))
122122
}
123123

124124
// max(2, 3) = 3
125-
func defMax(expr []ExprAST) float64 {
126-
return math.Max(p2(expr))
125+
func defMax(expr ...ExprAST) float64 {
126+
return math.Max(p2(expr...))
127127
}
128128

129129
// max(2, 3) = 2
130-
func defMin(expr []ExprAST) float64 {
131-
return math.Min(p2(expr))
130+
func defMin(expr ...ExprAST) float64 {
131+
return math.Min(p2(expr...))
132132
}
133133

134-
func p2(expr []ExprAST) (float64, float64) {
134+
func p2(expr ...ExprAST) (float64, float64) {
135135
return ExprASTResult(expr[0]), ExprASTResult(expr[1])
136136
}
137137

138138
// noerr(1/0) = 0
139139
// noerr(2.5/(1-1)) = 0
140-
func defNoerr(expr []ExprAST) (r float64) {
140+
func defNoerr(expr ...ExprAST) (r float64) {
141141
defer func() {
142142
if e := recover(); e != nil {
143143
r = 0

engine/util.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ func ExprASTResult(expr ExprAST) float64 {
112112
return expr.(NumberExprAST).Val
113113
case FunCallerExprAST:
114114
f := expr.(FunCallerExprAST)
115-
return defFunc[f.Name](f.Arg)
115+
return defFunc[f.Name](f.Arg...)
116116
}
117117

118118
return 0.0

0 commit comments

Comments
 (0)