// Copyright (c) 2024 Celestino Amoroso (celestino.amoroso@gmail.com). // All rights reserved. // iter-list.go package expr import "io" type FlatArrayIterator struct { a []any index int } func NewFlatArrayIterator(array []any) *FlatArrayIterator { return &FlatArrayIterator{a: array, index: 0} } func (it *FlatArrayIterator) HasOperation(name string) bool { return false } func (it *FlatArrayIterator) CallOperation(name string, args []any) (any, error) { return nil, errNoOperation(name) } func (it *FlatArrayIterator) Current() (item any, err error) { if it.index >= 0 && it.index < len(it.a) { item = it.a[it.index] } else { err = io.EOF } return } func (it *FlatArrayIterator) Next() (item any, err error) { if item, err = it.Current(); err != io.EOF { it.index++ } // if it.index < len(it.a) { // item = it.a[it.index] // it.index++ // } else { // err = io.EOF // } return } func (it *FlatArrayIterator) Index() int { return it.index - 1 }