Spec-Zone.ru › Elixir 1.10

Диапазон

Диапазоны представляют собой последовательность одного или нескольких, возрастающих или убывающих, последовательных целых чисел.

Диапазоны могут быть возрастающими (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?(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API