當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir Enum.slice用法及代碼示例


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從最後一個元素開始切片)。

如果 amount0start_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-lang.org大神的英文原創作品 Enum.slice(enumerable, index_range)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。