Enumerable Fork - FireDragon91245/Lua-Linq GitHub Wiki

enumerable:fork

Branches one source enumerable into multiple downstream consumers. This is useful when you want to compute several results from the same source flow.

Overloads

enumerable<T>   :fork(): enumerable<T>, enumerable<T>
enumerable<K, V>:fork(): enumerable<K, V>, enumerable<K, V>

enumerable<T>   :fork(
    fork1: fun(enumerable: enumerable<T>): R1,
    fork2: fun(enumerable: enumerable<T>): R2
): enumerable<R1 | R2>
enumerable<K, V>:fork(
    fork1: fun(enumerable: enumerable<K, V>): R1,
    fork2: fun(enumerable: enumerable<K, V>): R2
): enumerable<R1 | R2>

enumerable<T>   :fork(
    fork1:  fun(enumerable: enumerable<T>): R1,
    ...,
    fork10: fun(enumerable: enumerable<T>): R10
): enumerable<R1 | ... | R10>
enumerable<K, V>:fork(
    fork1:  fun(enumerable: enumerable<K, V>): R1,
    ...,
    fork10: fun(enumerable: enumerable<K, V>): R10
): enumerable<R1 | ... | R10>

Notes

  • The overload set supports either no callbacks, or from 2 through 10 callbacks.

Examples

local sum, has_even = linq.list(1, 2, 3, 4):fork(
    function(enum)
        return enum:collect(function(iter)
            local total = 0
            for value in iter do
                total = total + value
            end
            return total
        end)
    end,
    function(enum)
        return enum:any("n => n % 2 == 0")
    end
):spread()
local left, right = linq.list(1, 2, 3):fork()
⚠️ **GitHub.com Fallback** ⚠️