2022-07-16 01:35:53 +00:00
|
|
|
package sliceutils
|
|
|
|
|
2023-01-28 22:12:39 +00:00
|
|
|
func All[T any](ts []T, predicate func(t T) bool) bool {
|
|
|
|
for _, t := range ts {
|
|
|
|
if !predicate(t) {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
2022-07-16 01:35:53 +00:00
|
|
|
func Map[T, U any](ts []T, fn func(t T) U) []U {
|
|
|
|
us := make([]U, len(ts))
|
|
|
|
for i, t := range ts {
|
|
|
|
us[i] = fn(t)
|
|
|
|
}
|
|
|
|
return us
|
|
|
|
}
|
2022-07-18 10:36:31 +00:00
|
|
|
|
2022-11-17 20:31:15 +00:00
|
|
|
func MapWithError[T, U any](ts []T, fn func(t T) (U, error)) ([]U, error) {
|
|
|
|
us := make([]U, len(ts))
|
|
|
|
|
|
|
|
for i, t := range ts {
|
|
|
|
var err error
|
|
|
|
us[i], err = fn(t)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return us, nil
|
|
|
|
}
|
|
|
|
|
2022-07-18 10:36:31 +00:00
|
|
|
func Filter[T any](ts []T, fn func(t T) bool) []T {
|
|
|
|
us := make([]T, 0)
|
|
|
|
for _, t := range ts {
|
|
|
|
if fn(t) {
|
|
|
|
us = append(us, t)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return us
|
|
|
|
}
|