func-math.go/add: now supports the general iterator interface

This commit is contained in:
Celestino Amoroso 2024-04-26 04:47:59 +02:00
parent 750c660331
commit 62e16219f7

View File

@ -23,15 +23,20 @@ func doAdd(ctx ExprContext, name string, it Iterator) (result any, err error) {
var v any
for v, err = it.Next(); err == nil; v, err = it.Next() {
if subIter, ok := v.(Iterator); ok {
if v, err = doAdd(ctx, name, subIter); err != nil {
break
}
} else {
if err = checkNumberParamExpected(name, v, it.Index()); err != nil {
break
}
if array, ok := v.([]any); ok {
if v, err = doAdd(ctx, name, NewFlatArrayIterator(array)); err != nil {
break
}
}
}
if !sumAsFloat && isFloat(v) {
sumAsFloat = true