Documentation ¶
Overview ¶
Package sop provides various operation methods and functions on enumerable objects.
Index ¶
- func Group[TVal any, TMKey comparable, TMVal any](v Enumerable[TVal], f func(v TVal, i int) (TMKey, TMVal)) (res map[TMKey]TMVal)
- func GroupE[TVal any, TMKey comparable, TMVal any](v Enumerable[TVal], f func(v TVal, i int) (TMKey, TMVal)) (res map[TMKey]Enumerable[TMVal])
- func Set[T comparable](s []T) (st *set[T])
- func Slice[T any](s []T) *slice[T]
- type Enumerable
- func Fill[T any](n int, f func(i int) T) (res Enumerable[T])
- func Flat[T any](s Enumerable[[]T]) (res Enumerable[T])
- func Map[TIn, TOut any](s Enumerable[TIn], f func(v TIn, i int) TOut) Enumerable[TOut]
- func MapFlat[TKey comparable, TVal any](m map[TKey]TVal) Enumerable[Tuple[TKey, TVal]]
- func Range[T constraints.Integer](s, n T) (res Enumerable[T])
- type Tuple
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Group ¶
func Group[TVal any, TMKey comparable, TMVal any]( v Enumerable[TVal], f func(v TVal, i int) (TMKey, TMVal), ) (res map[TMKey]TMVal)
Group iterates through all elements of Enumerable v and adds the current value v to a map with the returned key of function f.
func GroupE ¶
func GroupE[TVal any, TMKey comparable, TMVal any]( v Enumerable[TVal], f func(v TVal, i int) (TMKey, TMVal), ) (res map[TMKey]Enumerable[TMVal])
GroupE works like Group but puts re-occuring keys in an enumerable value in the map.
func Set ¶
func Set[T comparable](s []T) (st *set[T])
Set packs a given slice []T into a *set[T] object. A set acts as same as a slice but guarantees that each element in the set is unique inside the set.
Types ¶
type Enumerable ¶
type Enumerable[T any] interface { // Unwrap returns the originaly packed // Enumerable []T of the Enumerable[T] object. Unwrap() []T // Len returns the length of the given Enumerable. Len() int // Each performs the given function f on each // element in the Enumerable. // // f is getting passed the value v at the // current position as well as the current // index i. Each(f func(v T, i int)) // Filter performs preticate p on each element // in the Enumerable and each element where p // returns true will be added to the result // Enumerable. // // p is getting passed the value v at the // current position as well as the current // index i. Filter(p func(v T, i int) bool) Enumerable[T] // Any returns true when at least one element in // the given Enumerable result in a true return of p // when performed on p. Any(p func(v T, i int) bool) bool // All returns true when all elements in the given // Enumerable result in a true return of p when performed // on p. All(p func(v T, i int) bool) bool // All returns true when all elements in the given // Enumerable result in a true return of p when performed // on p. None(p func(v T, i int) bool) bool // First returns the value and index of the first // occurence in the Enumerable where preticate p // returns true. // // If this applies to no element in the Enumerable, // default of T and -1 is returned. First(p func(v T, i int) bool) (T, int) // Count returns the number of elements in the given // Enumerable which, when applied on p, return true. Count(p func(v T, i int) bool) int // Shuffle re-arranges the given Enumerable in a pseudo-random // order and returns the result Enumerable. // // You can also pass a custom random source rngSrc if // you desire. Shuffle(rngSrc ...rand.Source) Enumerable[T] // Sort re-orders the Enumerable x given the provided less function. Sort(less func(p, q T, i int) bool) Enumerable[T] // Aggregate applies tze multiplicator function f over // all elements of the given Enumerable and returns the final // result. Aggregate(f func(a, b T) T) T // Push appends the passed value v to the Enumerable. Push(v T) // Pop removes the last element of the Enumerable and // returns its value. If the Enumerable is empty, the // default value of T is returned. Pop() T // Append adds all elements of Enumerable v to the // end of the current Enumerable. Append(v Enumerable[T]) // Flush removes all elements of the given Enumerable. Flush() // Enumerable removes the values from the given Enumerable // starting at i with the amount of n. The removed // Enumerable is returned as new Enumerable. Splice(i, n int) Enumerable[T] // At safely accesses the element in the Enumerable // at the given index i and returns it, if existent. // If there is no value at i, default of T and false // is returned. At(i int) (T, bool) // Replace safely replaces the value in the Enumerable // at the given index i with the given value v and // returns true if the value was replaced. If the // Enumerable has no value at i, false is returned. Replace(i int, v T) bool }
Enumerable specifies a wrapped slice object to perform different enumerable operations on.
func Fill ¶
func Fill[T any](n int, f func(i int) T) (res Enumerable[T])
Fill creates an empty Slice[T] with the given size n and executes f for each element in the Slice and sets the value at the given position to its return value.
f is therefore getting passed the current index i in the slice.
func Flat ¶
func Flat[T any](s Enumerable[[]T]) (res Enumerable[T])
Flat takes a slice containing arrays and creates a new slice with all elements of the sub-arrays arranged into a one-dimensional array.
func Map ¶
func Map[TIn, TOut any](s Enumerable[TIn], f func(v TIn, i int) TOut) Enumerable[TOut]
Map takes a Slice s and performs the passed function f on each element of the Slice s. The return value of the function f for each element is then packed into a new Slice in the same order as Slice s.
f is getting passed the value v at the given position in the slice as well as the current index i.
func MapFlat ¶
func MapFlat[TKey comparable, TVal any]( m map[TKey]TVal, ) Enumerable[Tuple[TKey, TVal]]
MapFlat creates an Enumerable containing key-value tuples from the given map entries.
func Range ¶
func Range[T constraints.Integer](s, n T) (res Enumerable[T])
Range creates an integer Slice filled with sequential numbers starting with s and ending with s+n-1 [n, s+n).