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)
}