Elixir v1.3.0-rc.0 Range View Source

Defines a range.

A range represents a discrete number of values where the first and last values are integers.

Ranges can be either increasing (first <= last) or decreasing (first > last). Ranges are also always inclusive.

A Range is represented internally as a struct. However, the most common form of creating and matching on ranges is via the ../2 macro, auto-imported from Kernel:

iex> range = 1..3
1..3
iex> first..last = range
iex> first
1
iex> last
3

A Range implements the Enumerable protocol, which means all of the functions in the Enum module is available:

iex> range = 1..10
1..10
iex> Enum.reduce(range, 0, fn i, acc -> i * i + acc end)
385
iex> Enum.count(range)
10
iex> Enum.member?(range, 11)
false
iex> Enum.member?(range, 8)
true

Link to this section Summary

Functions

Creates a new range

Returns true if the given term is a valid range

Link to this section Types

Link to this type t() View Source
t() :: %Range{first: integer, last: integer}
Link to this type t(first, last) View Source
t(first, last) :: %Range{first: first, last: last}

Link to this section Functions

Link to this function new(first, last) View Source
new(integer, integer) :: t

Creates a new range.

Link to this function range?(term) View Source
range?(term) :: boolean

Returns true if the given term is a valid range.

Examples

iex> Range.range?(1..3)
true

iex> Range.range?(0)
false