Rename loop.Every to loop.All

This commit is contained in:
rwxrob 2022-02-26 01:01:21 -05:00
parent 38ec166c55
commit 97c4525d1a
No known key found for this signature in database
GPG Key ID: 2B9111F33082AE77
2 changed files with 32 additions and 7 deletions

View File

@ -5,9 +5,16 @@ package loop
import "fmt" import "fmt"
// Do executes the given function for each item in the slice. If any // All executes the given function for every item in the slice.
// error is encountered processing stops and error returned. func All[T any](set []T, p func(i T)) {
func Do[T any](set []T, p func(i T) error) error { for _, i := range set {
p(i)
}
}
// UntilError executes the give function for every item in the slice
// until it encounters and error and returns the error, if any.
func UntilError[T any](set []T, p func(i T) error) error {
for _, i := range set { for _, i := range set {
if err := p(i); err != nil { if err := p(i); err != nil {
return err return err
@ -18,15 +25,15 @@ func Do[T any](set []T, p func(i T) error) error {
// Println prints ever element of the set. // Println prints ever element of the set.
func Println[T any](set []T) { func Println[T any](set []T) {
Do(set, func(i T) error { fmt.Println(i); return nil }) All(set, func(i T) { fmt.Println(i) })
} }
// Print prints ever element of the set. // Print prints ever element of the set.
func Print[T any](set []T) { func Print[T any](set []T) {
Do(set, func(i T) error { fmt.Print(i); return nil }) All(set, func(i T) { fmt.Print(i) })
} }
// Printf prints ever element of the set using format string. // Printf prints ever element of the set using format string.
func Printf[T any](set []T, form string) { func Printf[T any](set []T, form string) {
Do(set, func(i T) error { fmt.Printf(form, i); return nil }) All(set, func(i T) { fmt.Printf(form, i) })
} }

View File

@ -1,6 +1,24 @@
package loop_test package loop_test
import "github.com/rwxrob/bonzai/loop" import (
"fmt"
"github.com/rwxrob/bonzai/loop"
)
func ExampleAll() {
set1 := []string{"doe", "ray", "mi"}
loop.All(set1, func(s string) { fmt.Print(s) })
fmt.Println()
f1 := func() { fmt.Print("one") }
f2 := func() { fmt.Print("two") }
f3 := func() { fmt.Print("three") }
set2 := []func(){f1, f2, f3}
loop.All(set2, func(f func()) { f() })
// Output:
// doeraymi
// onetwothree
}
func ExamplePrintln() { func ExamplePrintln() {
set := []string{"doe", "ray", "mi"} set := []string{"doe", "ray", "mi"}