mirror of
https://github.com/rjNemo/underscore
synced 2026-06-06 02:26:42 +00:00
- Add TakeWhile: returns elements while predicate is true - Add DropWhile: drops elements while predicate is true - Comprehensive tests including edge cases - Benchmarks included Resolves Issue 14 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <noreply@anthropic.com>
17 lines
465 B
Go
17 lines
465 B
Go
package underscore
|
|
|
|
// TakeWhile returns elements from the beginning of the slice while the predicate returns true.
|
|
// It stops at the first element where the predicate returns false.
|
|
func TakeWhile[T any](values []T, predicate func(T) bool) []T {
|
|
for i, v := range values {
|
|
if !predicate(v) {
|
|
res := make([]T, i)
|
|
copy(res, values[:i])
|
|
return res
|
|
}
|
|
}
|
|
// All elements satisfy predicate
|
|
res := make([]T, len(values))
|
|
copy(res, values)
|
|
return res
|
|
}
|