From c266d9204bcc5e39ee152c576d945e02f8b4ca3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Tue, 4 Apr 2023 17:10:38 +0200 Subject: [PATCH] v0.0.100 --- langext/array.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/langext/array.go b/langext/array.go index 0f73eaf..ecf0add 100644 --- a/langext/array.go +++ b/langext/array.go @@ -217,6 +217,15 @@ func ArrFirst[T any](arr []T, comp func(v T) bool) (T, bool) { return *new(T), false } +func ArrFirstOrNil[T any](arr []T, comp func(v T) bool) *T { + for _, v := range arr { + if comp(v) { + return Ptr(v) + } + } + return nil +} + func ArrLast[T any](arr []T, comp func(v T) bool) (T, bool) { found := false result := *new(T) @@ -229,6 +238,22 @@ func ArrLast[T any](arr []T, comp func(v T) bool) (T, bool) { return result, found } +func ArrLastOrNil[T any](arr []T, comp func(v T) bool) *T { + found := false + result := *new(T) + for _, v := range arr { + if comp(v) { + found = true + result = v + } + } + if found { + return Ptr(result) + } else { + return nil + } +} + func ArrFirstIndex[T comparable](arr []T, needle T) int { for i, v := range arr { if v == needle {