55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
|
package strain
|
||
|
|
||
|
// Ints is a slice of int
|
||
|
type Ints []int
|
||
|
|
||
|
// Lists is a slice of int slices
|
||
|
type Lists [][]int
|
||
|
|
||
|
// Strings is a slice of strings
|
||
|
type Strings []string
|
||
|
|
||
|
// Keep runs the Ints through a function and returns the ones that succeed
|
||
|
func (i Ints) Keep(kf func(int) bool) Ints {
|
||
|
var ret Ints
|
||
|
for idx := range i {
|
||
|
if kf(i[idx]) {
|
||
|
ret = append(ret, i[idx])
|
||
|
}
|
||
|
}
|
||
|
return ret
|
||
|
}
|
||
|
|
||
|
// Discard runs the Ints through a function and returns the ones that fail
|
||
|
func (i Ints) Discard(df func(int) bool) Ints {
|
||
|
var ret Ints
|
||
|
for idx := range i {
|
||
|
if !df(i[idx]) {
|
||
|
ret = append(ret, i[idx])
|
||
|
}
|
||
|
}
|
||
|
return ret
|
||
|
}
|
||
|
|
||
|
// Keep runs the Lists through a function and returns the ones that succeed
|
||
|
func (l Lists) Keep(kf func([]int) bool) Lists {
|
||
|
var ret Lists
|
||
|
for idx := range l {
|
||
|
if kf(l[idx]) {
|
||
|
ret = append(ret, l[idx])
|
||
|
}
|
||
|
}
|
||
|
return ret
|
||
|
}
|
||
|
|
||
|
// Keep runs the Strings through a function and returns the ones that succeed
|
||
|
func (s Strings) Keep(kf func(string) bool) Strings {
|
||
|
var ret Strings
|
||
|
for idx := range s {
|
||
|
if kf(s[idx]) {
|
||
|
ret = append(ret, s[idx])
|
||
|
}
|
||
|
}
|
||
|
return ret
|
||
|
}
|