Диапазон
Определяет диапазон.
Диапазон представляет собой последовательность одного или нескольких, возрастающих или убывающих, последовательных целых чисел.
Диапазоны могут быть возрастающими (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 использует логику, основанную только на конечных точках, и не материализует весь список целых чисел.
Краткое описание
Типы
- t()
- t(first, last)
Функции
- disjoint?(arg1, arg2)
Проверяет, являются ли два диапазона непересекающимися.
- new(first, last)
Создает новый диапазон.
Типы
t()
t() :: %Range{first: integer(), last: integer()} t(first, last)
t(first, last) :: %Range{first: first, last: last} Функции
disjoint?(arg1, arg2)
(с версии 1.8.0)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.8.2/Range.html