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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。