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)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。