mirror of
https://github.com/MontFerret/ferret.git
synced 2025-07-17 01:32:22 +02:00
Feature/#9 array functions (#57)
* #9 Added 'APPEND' function * #9 Added 'FIRST' function * #9 Added 'FLATTEN' function * #9 Added 'INTERSECTION' function * #9 Added 'LAST' function * #9 Added 'MINUS' function * #9 Added 'NTH' function * #9 Added 'OUTERSECTION' function * #9 Added 'POP' function * #9 Added 'POSITION' function * #9 Added 'PUSH' function * Fixed nil pointer exception in value parser * #9 Added 'REMOVE_NTH' function * #9 Added 'REMOVE_VALUE' function * #9 Added 'REMOVE_VALUES' function * #9 Added 'REVERSE' function * #9 Added 'SHIFT' function * #9 Added 'SLICE' function * Removed meme * #9 Added 'SORTED' function * #9 Added SORTED_UNIQUE function * #9 Added 'UNION' function * #9 Added 'UNION_DISTINCT' function * #9 Added 'UNIQUE' function * #9 Added 'UNSHIFT' function * #9 Made more strict optional arg validation * #9 Fixed linting errors
This commit is contained in:
@ -128,6 +128,10 @@ func (t *Array) ForEach(predicate ArrayPredicate) {
|
||||
func (t *Array) Get(idx Int) core.Value {
|
||||
l := len(t.value) - 1
|
||||
|
||||
if l < 0 {
|
||||
return None
|
||||
}
|
||||
|
||||
if int(idx) > l {
|
||||
return None
|
||||
}
|
||||
@ -151,8 +155,21 @@ func (t *Array) Push(item core.Value) {
|
||||
t.value = append(t.value, item)
|
||||
}
|
||||
|
||||
func (t *Array) Slice(from, to Int) []core.Value {
|
||||
return t.value[from:to]
|
||||
func (t *Array) Slice(from, to Int) *Array {
|
||||
length := t.Length()
|
||||
|
||||
if from >= length {
|
||||
return NewArray(0)
|
||||
}
|
||||
|
||||
if to > length {
|
||||
to = length
|
||||
}
|
||||
|
||||
result := new(Array)
|
||||
result.value = t.value[from:to]
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
func (t *Array) IndexOf(item core.Value) Int {
|
||||
|
Reference in New Issue
Block a user