こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はEnum.sliceについて学んだことをまとめます。
2024/10/13に開催したイベントpiyopiyo.ex #46:もくもく作業タイムの成果です。
目的
Enum.sliceの使いどころを理解する。
実行環境
Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.17.0
Erlang v27.0
前提
あらかじめ下記の変数を定義しておきます
cart = [
%{fruit: "apple", count: 3},
%{fruit: "banana", count: 1},
%{fruit: "orange", count: 6}
]
Enum.slice/2
Enum.slice(enumerable, index_range)
は、
-
enumerable
のうちindex_range
(ゼロベース)の範囲を要素を取り出し、リストにして返す -
index_range
が負の値の場合、要素を後ろから数える -
index_range
がenumerable
の要素数の範囲外にあたる場合、ヒットした要素だけ取り出す
例1
Enum.slice(cart, 0..1)
[%{count: 3, fruit: "apple"}, %{count: 1, fruit: "banana"}, %{count: 6, fruit: "orange"}]
例2
Enum.slice(cart, -2..-1)
[%{count: 1, fruit: "banana"}, %{count: 6, fruit: "orange"}]
Enum.slice/3
Enum.slice(enumerable, start_index, amount)
は、
-
enumerable
のうちstart_index
(ゼロベース)を数えた地点を開始地点とし、amount
個ぶんのを要素を取り出し、リストにして返す -
start_index
が負の値の場合要素を後ろから数えた地点を開始地点とする -
amount
に負の値は指定できない
例1
Enum.slice(cart, 1, 2)
[%{count: 1, fruit: "banana"}, %{count: 6, fruit: "orange"}]
例2
Enum.slice(cart, -2, 2)
[%{count: 1, fruit: "banana"}, %{count: 6, fruit: "orange"}]
例3
Enum.slice(1..1000,-10, 3)
[991, 992, 993]
例4
Enum.slice(1..1000,-10, -3)
** (FunctionClauseError) no function clause matching in Enum.slice/3
~Elixirの国のご案内~
↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます
↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。
↓We Are The Alchemists, my friends!1
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。2
-
@torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。 ↩