func tailN()

in lib/collections.go [610:638]


func tailN(arg0, arg1 ref.Val) ref.Val {
	obj := arg0
	l, ok := obj.(traits.Lister)
	if !ok {
		return types.ValOrErr(obj, "no such overload")
	}
	after, ok := arg1.(types.Int)
	if !ok {
		return types.ValOrErr(after, "no such overload")
	}
	n := l.Size().(types.Int)
	if n == 0 {
		return arg0
	}
	if n <= after {
		return types.NewRefValList(types.DefaultTypeAdapter, []ref.Val{})
	}
	t := make([]ref.Val, 0, n-after)
	it := l.Iterator()
	for it.HasNext() == types.True {
		if after > 0 {
			it.Next()
			after--
			continue
		}
		t = append(t, it.Next())
	}
	return types.NewRefValList(types.DefaultTypeAdapter, t)
}