浅茅生の小野のしの原忍ぶれどあまりてなどか人の恋しき
Advent Calendar 2022 90日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
first..last//stepを楽しんでみます。
first..last//step
first
からlast
までのRangeを作ってくれます。
刻みはstep
で指定します。
Elixir 1.12 or laterです。
公式の説明をそのまま貼っておきます。
前半の3件で使っているleft in rightは、leftがhandの一員であるかどうかを返すマクロです。
Rangeの中にメンバーとして存在しているかどうかを確かめています。
後半の3件でつかっているEnum.to_list/1はRangeをListに変換しています。
ここではRangeを引数にとっています。
引数はEnumerableなものであればよく、たとえばMapも引数にとれます。
この記事とは外れるし、私はこのくらいしか説明できないのでこのへんでやめておきます。
最後の例のようにありえないfirst
からlast
へのありえない刻み方を指定した場合には、なんにもないRangeということになります。
別の例を書いてみます。
iex> Enum.to_list(1..-3//-1) # (イ)
[1, 0, -1, -2, -3]
iex> Enum.to_list(1..-3//1) # (ロ)
[]
1
から-3
に減っていくので(イ)の例のように-1
ずつ減らすというのはあり得るわけです。
ところが(ロ)のように、Rangeが減っていく方向に進んでいるのに対して+1
の刻みはあり得ないわけです。
Wrapping up
Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
first..last//stepの説明を書きました。
私は未だ実践で使ったことはありません。
実例ありましたらぜひお便り(コメント)をお寄せください。
以上です。