API/Enumerable-Generators

Enumerable.Choice(...)

Return an Enumerable that represents an infinite sequence of randomly chosen items in the arguments.

Parameters

...
Either a list-like table or multiple arguments to choose.

Return value

An infinite sequence of randomly chosen items.

Usage

Enumerable.Choice(1, 2, 3, 4):ToString() == "[4, 2, 4, 3, 1, 4, 2, 1, 3, 1, ...]"
Enumerable.Choice({ 1, 2, 3, 4 }):ToString() == "[3, 2, 4, 3, 4, 1, 3, 2, 3, 1, ...]"


Enumerable.Cycle(...)

Return an Enumerable that will cycle over the items in the arguments.

Parameters

...
Either a list-like table or multiple arguments to choose.

Return value

An infinite sequence of cycled items.

Usage

Enumerable.Cycle(1, 2, 3, 4):ToString() == "[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, ...]"
Enumerable.Cycle({ 1, 2, 3, 4 }):ToString() == "[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, ...]"


Enumerable.Empty()

Return an Enumerable that contains no items

Return value

an empty Enumerable

Usage

Enumerable.Empty():ToString() == "[]"


Enumerable.From(obj)

Return an Enumerable by trying to convert an object to one through some means.
Passing in nil will result in an empty Enumerable Passing in an Enumerable will return the same Enumerable Passing in a string will return an Enumerable that iterates over the characters in the string. Passing in a table will call List.WrapTable Passing in a number or boolean will return an Enumerable with the element you passed in. Any other object will result in an error.

Parameters

obj

Return value

an Enumerable

Usage

Enumerable.From(nil):ToString() == "[]"
Enumerable.From("hey"):ToString() == '["h", "e", "y"]'
Enumerable.From(Enumerable.Empty()):ToString() == "[]"
Enumerable.From({ 1, 2, 3 }):ToString() == "[1, 2, 3]"
Enumerable.From(5):ToString() == "[5]"
Enumerable.From(true):ToString() == "[true]"


Enumerable.FromIterator(func, t, start)

Return an Enumerable by converting a Lua-style iterator to an Enumerable.

Parameters

func
The iteration function
t
the state object of the iterator
start
the starting object of the iterator

Return value

an Enumerable

Usage

Enumerable.FromIterator(pairs({ hey = true, there = true})):ToString() == '["hey", "there"]'


Enumerable.Generate(generator, count)

Return an Enumerable which yields the results of repeatedly calling the provided generator

Parameters

generator
a function that will be called repeatedly
count
the amount of elements to contain. If nil, then it will be an infinite sequence.

Return value

an Enumerable

Usage

Enumerable.Generate(function() return math.random(5) end):ToString() == "[1, 5, 3, 5, 2, 4, 2, 2, 1, 2, ...]"
Enumerable.Generate(function() return math.random(5) end, 5):ToString() == "[4, 2, 4, 5, 3]"


Enumerable.Range(start, count, step)

Return an increasing range of numbers

Parameters

start
the starting number
count
the count of elements
step
the step size, defaults to 1 if nil. Must not be 0.

Return value

an Enumerable

Usage

Enumerable.Range(0, 5):ToString() == "[0, 1, 2, 3, 4]"
Enumerable.Range(5, 5):ToString() == "[5, 6, 7, 8, 9]"
Enumerable.Range(0, 5, 2):ToString() == "[0, 2, 4, 6, 8]"


Enumerable.RangeDown(start, count, step)

Return a decreasing range of numbers

Parameters

start
the starting number
count
the count of elements
step
the step size, defaults to 1 if nil. Must not be 0.

Return value

an Enumerable

Usage

Enumerable.RangeDown(0, 5):ToString() == "[0, -1, -2, -3, -4]"
Enumerable.RangeDown(5, 5):ToString() == "[5, 4, 3, 2, 1]"
Enumerable.RangeDown(10, 5, 2):ToString() == "[10, 8, 6, 4, 2]"


Enumerable.RangeTo(start, finish, step)

Return a range of numbers inclusively covers [start, finish] if possible

Parameters

start
the starting number
finish
the final number
step
the step size, defaults to 1 if nil. Must not be 0.

Return value

an Enumerable

Usage

Enumerable.RangeTo(0, 5) == "[0, 1, 2, 3, 4, 5]"
Enumerable.RangeTo(5, 0) == "[5, 4, 3, 2, 1, 0]"
Enumerable.RangeTo(0, 9, 2) == "[0, 2, 4, 6, 8]"
Enumerable.RangeTo(0, 10, 2) == "[0, 2, 4, 6, 8, 10]"


Enumerable.Repeat(obj, num)

Return an Enumerable that repeats either infinitely or a given number of times

Parameters

obj
the item to repeat
num
either nil or the amount of times to repeat

Return value

an Enumerable that repeats the object

Usage

Enumerable.Repeat(0):ToString() == "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]"
Enumerable.Repeat(0, 5):ToString() == "[0, 0, 0, 0, 0]"


Enumerable.RepeatWithFinalize(initializer, finalizer, num)

Return an Enumerable that repeats

Parameters

initializer
a function which will return a value to be repeated
finalizer
a function that will be run on dispose, passing in the repeated value
num
the number of times to repeat, or nil to repeat infinitely

Return value

an Enumerable

Usage

Enumerable.RepeatWithFinalize(function() return 0 end):ToString() == "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]"
Enumerable.RepeatWithFinalize(function() return 0 end, function(item) end):ToString() == "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...]"
Enumerable.RepeatWithFinalize(function() return 0 end, nil, 5):ToString() == "[0, 0, 0, 0, 0]"


Enumerable.Return(element)

Return an Enumerable that contains a single provided element

Parameters

element
the element to contain

Return value

an Enumerable

Usage

Enumerable.Return(nil):ToString() == "[nil]"
Enumerable.Return(5):ToString() == "[5]"
Enumerable.Return("hey"):ToString() == '["hey"]'


Enumerable.SetTableWrapper(func)

Set the standard table wrapper function that Enumerable.From will use

Parameters

func
the function to call that will have a table passed in.

Usage

Enumerable.SetTableWrapper(List.WrapTable)


Enumerable.ToInfinity(start, step)

Return an Enumerable which represents infinite sequence which yields numbers starting at the given start and increasing by the step.
If a negative step is specified, it will merely be made positive.

Parameters

start
The starting number, defaulting to 0 if not specified.
step
The step size, defaulting to 1 if not specified. Must not be 0.

Return value

an Enumerable

Usage

Enumerable.ToInfinity():ToString() == "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...]"
Enumerable.ToInfinity(1):ToString() == "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...]"
Enumerable.ToInfinity(0, 2):ToString() == "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, ...]"
Enumerable.ToInfinity(0, -1):ToString() == "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ...]"


Enumerable.ToNegativeInfinity(start, step)

Return an Enumerable which represents infinite sequence which yields numbers starting at the given start and decreasing by the step.
If a negative step is specified, it will merely be made positive.

Parameters

start
The starting number, defaulting to 0 if not specified.
step
The step size, defaulting to 1 if not specified. Must not be 0.

Return value

an Enumerable

Usage

Enumerable.ToNegativeInfinity():ToString() == "[0, -1, -2, -3, -4, -5, -6, -7, -8, -9, ...]"
Enumerable.ToNegativeInfinity(10):ToString() == "[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ...]"
Enumerable.ToNegativeInfinity(0, 2):ToString() == "[0, -2, -4, -6, -8, -10, -12, -14, -16, -18, ...]"
Enumerable.ToNegativeInfinity(0, -1):ToString() == "[0, -1, -2, -3, -4, -5, -6, -7, -8, -9, ...]"


Enumerable.Unfold(seed, func)

Return an Enumerable which repeatedly calls a function, passing around an aggregated value

Parameters

seed
The initial value to work on and yield
func
The function to repeatedly call, first passing in the yield, then the result after that.

Return value

an Enumerable

Usage

Enumerable.Unfold(1, function(x) return x*2 end):ToString() == "[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, ...]"
Enumerable.Unfold(1, "x => x+1"):ToString() == "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...]"



Comments

Posts Quoted:
Reply
Clear All Quotes