LoginSignup
13
1

More than 1 year has passed since last update.

浅茅生の小野のしの原忍ぶれどあまりてなどか人の恋しき


Advent Calendar 2022 90日目1の記事です。
I'm looking forward to 12/25,2022 :santa::santa_tone1::santa_tone2::santa_tone3::santa_tone4::santa_tone5:
私のAdvent Calendar 2022 一覧


はじめに

Elixirを楽しんでいますか:bangbang::bangbang::bangbang:

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も引数にとれます。
この記事とは外れるし、私はこのくらいしか説明できないのでこのへんでやめておきます。

スクリーンショット 2022-04-10 17.57.41.png

最後の例のようにありえない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 :lgtm::lgtm::lgtm::lgtm::lgtm:

Enjoy Elixir:bangbang::bangbang::bangbang:
$\huge{Enjoy\ Elixir🚀}$

first..last//stepの説明を書きました。
私は未だ実践で使ったことはありません。
実例ありましたらぜひお便り(コメント)をお寄せください。

以上です。

  1. @kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。

13
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
1