Диапазон
Диапазоны представляют собой последовательность одного или нескольких, возрастающих или убывающих, последовательных целых чисел.
Диапазоны могут быть возрастающими (first <= last) или убывающими (first > last). Диапазоны всегда включают свои границы.
Диапазон внутренне представлен как структура. Однако наиболее распространённый способ создания и работы с диапазонами — это макрос ../2, автоматически импортированный из Kernel:
iex> range = 1..3 1..3 iex> first..last = range iex> first 1 iex> last 3
Диапазон реализует протокол Enumerable, что означает, что функции из модуля Enum могут быть использованы для работы с диапазонами:
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
Такие вызовы функций эффективны с точки зрения памяти независимо от размера диапазона. Реализация протокола Enumerable использует логику, основанную только на конечных точках, и не материализует весь список целых чисел.
Краткое описание
Типы
Функции
- disjoint?(range1, range2)
Проверяет, являются ли два диапазона непересекающимися.
- new(first, last)
Создаёт новый диапазон.
Типы
t()
Характеристики
t() :: %Range{first: integer(), last: integer()} t(first, last)
Характеристики
t(first, last) :: %Range{first: first, last: last} Функции
disjoint?(range1, range2)
Характеристики
disjoint?(t(), t()) :: boolean()
Проверяет, являются ли два диапазона непересекающимися.
Примеры
iex> Range.disjoint?(1..5, 6..9) true iex> Range.disjoint?(5..1, 6..9) true iex> Range.disjoint?(1..5, 5..9) false iex> Range.disjoint?(1..5, 2..7) false
new(first, last)
Характеристики
new(integer(), integer()) :: t()
Создаёт новый диапазон.
Примеры
iex> Range.new(-100, 100) -100..100
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.10.4/Range.html