mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 21:42:51 -05:00
57 lines
1000 B
Go
57 lines
1000 B
Go
package utils
|
|
|
|
func Filter[T any](items []T, predicate func(T) bool) []T {
|
|
var result []T
|
|
for _, item := range items {
|
|
if predicate(item) {
|
|
result = append(result, item)
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
|
|
func Find[T any](items []T, predicate func(T) bool) (T, bool) {
|
|
for _, item := range items {
|
|
if predicate(item) {
|
|
return item, true
|
|
}
|
|
}
|
|
var zero T
|
|
return zero, false
|
|
}
|
|
|
|
func Map[T, U any](items []T, transform func(T) U) []U {
|
|
result := make([]U, len(items))
|
|
for i, item := range items {
|
|
result[i] = transform(item)
|
|
}
|
|
return result
|
|
}
|
|
|
|
func Contains[T comparable](items []T, target T) bool {
|
|
for _, item := range items {
|
|
if item == target {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func Any[T any](items []T, predicate func(T) bool) bool {
|
|
for _, item := range items {
|
|
if predicate(item) {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func All[T any](items []T, predicate func(T) bool) bool {
|
|
for _, item := range items {
|
|
if !predicate(item) {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|