Elixir語言中 Range 相關用法介紹如下。
範圍表示零、一個或多個升序或降序整數的序列,具有稱為步長的共同差異。
範圍始終包含在內,並且可能具有自定義步驟。在範圍上創建和匹配的最常見形式是通過   和 first..last   符號,auto-imported 來自 first..last//step   :Kernel 
iex> Enum.to_list(1..3)
[1, 2, 3]
iex> Enum.to_list(1..3//2)
[1, 3]
iex> Enum.to_list(3..1//-1)
[3, 2, 1]
範圍也可以有一個元素:
iex> Enum.to_list(1..1)
[1]
iex> Enum.to_list(1..1//2)
[1]
甚至根本沒有元素:
iex> Enum.to_list(10..0//1)
[]
iex> Enum.to_list(0..10//-1)
[]
當定義一個沒有步長的範圍時,步長將根據範圍的第一個和最後一個位置來定義,如果是first >= last,它將是一個遞增的範圍,步長為1。否則,它是一個遞減的範圍。但請注意,不推薦使用隱式遞減範圍。因此,如果您需要從 3 到 1 的遞減範圍,最好改為編寫 3..1//-1。
定義
遞增範圍 first..last//step 是從 first 到 last 增加 step 的範圍,其中 step 必須是正整數,所有值 v 必須是 first <= v and v <= last 。因此,範圍 10..0//1 是一個空範圍,因為沒有值 v 是 10 <= v and v <= 0 。
同樣,遞減範圍 first..last//step 是從 first 到 last 遞減 step 的範圍,其中 step 必須是負整數,而值 v 必須是 first >= v and v >= last 。因此,範圍 0..10//-1 是一個空範圍,因為沒有值 v 是 0 >= v and v >= 10 。
表示
在內部,範圍表示為結構:
iex> range = 1..9//2
1..9//2
iex> first..last//step = range
iex> first
1
iex> last
9
iex> step
2
iex> range.step
2
您可以直接訪問範圍字段(first、last 和 step),但不應手動修改或創建範圍。而是使用正確的運算符或   和 new/2   。new/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 
相關用法
- Elixir Range.size用法及代碼示例
 - Elixir Range.new用法及代碼示例
 - Elixir Range.disjoint?用法及代碼示例
 - Elixir Registry.count_match用法及代碼示例
 - Elixir Registry.lookup用法及代碼示例
 - Elixir Record.extract用法及代碼示例
 - Elixir Registry.unregister_match用法及代碼示例
 - Elixir Regex.run用法及代碼示例
 - Elixir Regex.names用法及代碼示例
 - Elixir Record.defrecord用法及代碼示例
 - Elixir Registry.register用法及代碼示例
 - Elixir Registry用法及代碼示例
 - Elixir Registry.values用法及代碼示例
 - Elixir Registry.put_meta用法及代碼示例
 - Elixir Regex.named_captures用法及代碼示例
 - Elixir Registry.keys用法及代碼示例
 - Elixir Regex.match?用法及代碼示例
 - Elixir Record用法及代碼示例
 - Elixir Registry.start_link用法及代碼示例
 - Elixir Registry.unregister用法及代碼示例
 - Elixir Registry.delete_meta用法及代碼示例
 - Elixir Registry.count用法及代碼示例
 - Elixir Registry.meta用法及代碼示例
 - Elixir Registry.select用法及代碼示例
 - Elixir Registry.update_value用法及代碼示例
 
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Range。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
