swiss v2.8.1 Swiss.Enum View Source

Helper functions for dealing with Enumerables.

Link to this section Summary

Functions

Finds an element and its index in enumerable for which fun returns true.

Finds the first element in enumerable where its key equals value. Returns default if not found.

Finds the first element in enumerable where its key equals value. Raises if not found.

Same as Enum.group_by/3 but expects each group to have a single element, and therefore returns only that element per key, instead of a list.

Applies cb to all elements in enum, ignores the return and returns enum.

Link to this section Functions

Link to this function

find_both(enumerable, fun)

View Source

Finds an element and its index in enumerable for which fun returns true.

Examples

iex> Swiss.Enum.find_both([42, 44, 46], fn num -> num == 44 end)
{44, 1}

iex> Swiss.Enum.find_both([42, 44, 46], fn num -> num == 45 end)
nil
Link to this function

find_by(enumerable, default \\ nil, key, value)

View Source
find_by(Enumerable.t(), any(), any(), any()) :: any()

Finds the first element in enumerable where its key equals value. Returns default if not found.

Examples

iex> Swiss.Enum.find_by([%{life: 11}, %{life: 42}], :life, 42)
%{life: 42}

iex> Swiss.Enum.find_by([%{life: 11}, %{life: 42}], :wat, 42)
nil

iex> Swiss.Enum.find_by([%{life: 11}, %{life: 42}], 42, :wat, 42)
42

iex> Swiss.Enum.find_by([%Swiss.TestStruct{life: 42}], :life, 42)
%Swiss.TestStruct{life: 42}
Link to this function

find_by!(enumerable, key, value)

View Source
find_by!(Enumerable.t(), any(), any()) :: any()

Finds the first element in enumerable where its key equals value. Raises if not found.

Examples

iex> Swiss.Enum.find_by!([%{life: 11}, %{life: 42}], :life, 42)
%{life: 42}

iex> Swiss.Enum.find_by!([%{life: 11}, %{life: 42}], :wat, 42)
** (Swiss.Enum.KeyValueError) key :wat with value 42 not found in: [%{life: 11}, %{life: 42}]
Link to this function

group_by_single(enum, key_fn, value_fn \\ fn x -> x end)

View Source

Same as Enum.group_by/3 but expects each group to have a single element, and therefore returns only that element per key, instead of a list.

Examples

iex> Swiss.Enum.group_by_single(
...>   [%{k: "life", v: 42}, %{k: "death", v: 13}, %{k: "ooo", v: 0}],
...>   & &1.k,
...>   & &1.v
...> )
%{"life" => 42, "death" => 13, "ooo" => 0}

Applies cb to all elements in enum, ignores the return and returns enum.

Examples

iex> Swiss.Enum.thru([1, 2, 3], fn a -> a + 1 end)
[1, 2, 3]