builtin-iterator.go: added supporto to automatic variables $_ (iterator index) and $__ (iterator item)

This commit is contained in:
2026-07-31 07:27:59 +02:00
parent 1d15b99740
commit dd9aa5d52d
+12 -2
View File
@@ -92,13 +92,23 @@ func runFunc(ctx kern.ExprContext, name string, args map[string]any) (result any
// params = map[string]any{kern.ParamIndex: it.Index(), kern.ParamItem: item} // params = map[string]any{kern.ParamIndex: it.Index(), kern.ParamItem: item}
params[kern.ParamIndex] = it.Index() params[kern.ParamIndex] = it.Index()
params[kern.ParamItem] = item params[kern.ParamItem] = item
localCtx.UnsafeSetVar("_", it.Index())
localCtx.UnsafeSetVar("__", item)
abort := false
if _, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil { if _, err = op.InvokeNamed(localCtx, iterParamOperator, params); err != nil {
break abort = true
} else if abortAny, exists := localCtx.GetVar(iterVarAbort); exists { } else if abortAny, exists := localCtx.GetVar(iterVarAbort); exists {
if abort, ok := boolean.ToBool(abortAny); ok && abort { if abort, ok := boolean.ToBool(abortAny); ok && abort {
break abort = true
} }
} }
localCtx.DeleteVar("__")
localCtx.DeleteVar("_")
if abort {
break
}
} }
} }