array builtins
This commit is contained in:
@@ -49,3 +49,31 @@ func (ao *Array) Equal(other Object) bool {
|
||||
}
|
||||
return false
|
||||
}
|
||||
func (ao *Array) Copy() *Array {
|
||||
elements := make([]Object, len(ao.Elements))
|
||||
for i, e := range ao.Elements {
|
||||
elements[i] = e
|
||||
}
|
||||
return &Array{Elements: elements}
|
||||
}
|
||||
|
||||
func (ao *Array) Reverse() {
|
||||
for i, j := 0, len(ao.Elements)-1; i < j; i, j = i+1, j-1 {
|
||||
ao.Elements[i], ao.Elements[j] = ao.Elements[j], ao.Elements[i]
|
||||
}
|
||||
}
|
||||
|
||||
func (ao *Array) Len() int {
|
||||
return len(ao.Elements)
|
||||
}
|
||||
|
||||
func (ao *Array) Swap(i, j int) {
|
||||
ao.Elements[i], ao.Elements[j] = ao.Elements[j], ao.Elements[i]
|
||||
}
|
||||
|
||||
func (ao *Array) Less(i, j int) bool {
|
||||
if cmp, ok := ao.Elements[i].(Comparable); ok {
|
||||
return cmp.Less(ao.Elements[j])
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user