iter-list.go: implemntation of the ExtInterface and coperation reset
This commit is contained in:
parent
5cf0bfbad4
commit
6c604812ee
38
iter-list.go
38
iter-list.go
@ -4,7 +4,10 @@
|
|||||||
// iter-list.go
|
// iter-list.go
|
||||||
package expr
|
package expr
|
||||||
|
|
||||||
import "io"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
)
|
||||||
|
|
||||||
type ListIterator struct {
|
type ListIterator struct {
|
||||||
a *ListType
|
a *ListType
|
||||||
@ -34,12 +37,26 @@ func NewAnyIterator(value any) (it *ListIterator) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *ListIterator) HasOperation(name string) bool {
|
func (it *ListIterator) String() string {
|
||||||
return false
|
var l = 0
|
||||||
|
if it.a != nil {
|
||||||
|
l = len(*it.a)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("$(#%d)", l)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *ListIterator) CallOperation(name string, args []any) (any, error) {
|
func (it *ListIterator) HasOperation(name string) bool {
|
||||||
return nil, errNoOperation(name)
|
yes := name == resetName
|
||||||
|
return yes
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *ListIterator) CallOperation(name string, args []any) (v any, err error) {
|
||||||
|
if name == resetName {
|
||||||
|
v, err = it.Reset()
|
||||||
|
} else {
|
||||||
|
err = errNoOperation(name)
|
||||||
|
}
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *ListIterator) Current() (item any, err error) {
|
func (it *ListIterator) Current() (item any, err error) {
|
||||||
@ -56,15 +73,14 @@ func (it *ListIterator) Next() (item any, err error) {
|
|||||||
if item, err = it.Current(); err != io.EOF {
|
if item, err = it.Current(); err != io.EOF {
|
||||||
it.index++
|
it.index++
|
||||||
}
|
}
|
||||||
// if it.index < len(it.a) {
|
|
||||||
// item = it.a[it.index]
|
|
||||||
// it.index++
|
|
||||||
// } else {
|
|
||||||
// err = io.EOF
|
|
||||||
// }
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *ListIterator) Index() int {
|
func (it *ListIterator) Index() int {
|
||||||
return it.index - 1
|
return it.index - 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (it *ListIterator) Reset() (bool, error) {
|
||||||
|
it.index = 0
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user