Диапазон
Определяет диапазон.
Диапазон представляет собой последовательность одного или нескольких последовательных целых чисел, возрастающих или убывающих.
Диапазоны могут быть возрастающими (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()
Создаёт новый диапазон.
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.9.4/Range.html