Elixir語言中 Enum.slice 相關用法介紹如下。
用法一
slice(enumerable, index_range)
(從 1.6.0 開始)
@spec slice(t(), Range.t()) :: list()
通過 index_range 返回給定 enumerable 的子集列表。
index_range 必須是 。給定一個 Range enumerable ,它會在 index_range.first (zero-base) 之前刪除元素,然後在元素 index_range.last (包括)之前獲取元素。
索引已標準化,這意味著將從末尾開始計算負索引(例如,-1 表示 enumerable 的最後一個元素)。
如果index_range.last 超出範圍,則將其指定為最後一個元素的索引。
如果規範化的 index_range.first 超出給定的 enumerable 的範圍,或者這個大於規範化的 index_range.last ,則返回 []。
例子
iex> Enum.slice(1..100, 5..10)
[6, 7, 8, 9, 10, 11]
iex> Enum.slice(1..10, 5..20)
[6, 7, 8, 9, 10]
# last five elements (negative indexes)
iex> Enum.slice(1..30, -5..-1)
[26, 27, 28, 29, 30]
對於 start > stop 的範圍,您需要將它們顯式標記為增加:
iex> Enum.slice(1..30, 25..-1//1)
[26, 27, 28, 29, 30]
如果值超出範圍,則返回一個空列表:
iex> Enum.slice(1..10, 11..20)
[]
# first is greater than last
iex> Enum.slice(1..10, 6..5)
[]
用法二
slice(enumerable, start_index, amount)
@spec slice(t(), index(), non_neg_integer()) :: list()
返回給定 enumerable 的子集列表,從 start_index(從零開始)和 amount 元素數量(如果可用)。
給定一個 enumerable ,它會在元素 start_index 之前刪除元素;然後,它需要amount 個元素,如果沒有足夠的元素,則返回盡可能多的元素。
可以傳遞一個負數start_index,這意味著enumerable被枚舉一次,索引從最後開始計數(例如,-1從最後一個元素開始切片)。
如果 amount 是 0 或 start_index 超出範圍,則返回 []。
例子
iex> Enum.slice(1..100, 5, 10)
[6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
# amount to take is greater than the number of elements
iex> Enum.slice(1..10, 5, 100)
[6, 7, 8, 9, 10]
iex> Enum.slice(1..10, 5, 0)
[]
# using a negative start index
iex> Enum.slice(1..10, -6, 3)
[5, 6, 7]
# out of bound start index (positive)
iex> Enum.slice(1..10, 10, 5)
[]
# out of bound start index (negative)
iex> Enum.slice(1..10, -11, 5)
[]
相關用法
- Elixir Enum.slide用法及代碼示例
- Elixir Enum.split_with用法及代碼示例
- Elixir Enum.sum用法及代碼示例
- Elixir Enum.split用法及代碼示例
- Elixir Enum.split_while用法及代碼示例
- Elixir Enum.shuffle用法及代碼示例
- Elixir Enum.sort_by用法及代碼示例
- Elixir Enum.sort用法及代碼示例
- Elixir Enum.scan用法及代碼示例
- Elixir Enum.unzip用法及代碼示例
- Elixir Enum.min_max用法及代碼示例
- Elixir Enum.reduce_while用法及代碼示例
- Elixir Enum.at用法及代碼示例
- Elixir Enum.dedup用法及代碼示例
- Elixir Enum.zip用法及代碼示例
- Elixir Enum.find_value用法及代碼示例
- Elixir Enum.product用法及代碼示例
- Elixir Enum.map_join用法及代碼示例
- Elixir Enum.zip_with用法及代碼示例
- Elixir Enum.intersperse用法及代碼示例
- Elixir Enum.flat_map用法及代碼示例
- Elixir Enum.count用法及代碼示例
- Elixir Enum.fetch用法及代碼示例
- Elixir Enum.frequencies用法及代碼示例
- Elixir Enum.drop用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Enum.slice(enumerable, index_range)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
