Elixirでループを作ってみた


Hello Qiita

@kikuyuta さんからの「Qiita書くでね」「これからはアウトプットでね」ってメンション圧力を忖度して、これまでリードオンリーだったQiitaに不定期で自分の勉強まとめもかねて投稿しようと思います。

やったこと

で、初めての投稿は最近色んな意味でハマりつつあるElixirでループさせてみることにしました。
いろいろな書き方があると思いますがまずは永久ループさせてみることに。

環境

OS: macOS High Sierra 10.13.6
Elixir: % brew install elixirでインストール

% iex --version
Erlang/OTP 21 [erts-10.0.8] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]

IEx 1.7.3 (compiled with Erlang/OTP 21)

解説

countから開始してcount_upだけ増分、sleep_msecミリ秒だけスリープを繰り返します。

loop.exs
defmodule Qiita do
  def loop(count, count_up, sleep_msec) do
    IO.puts "count => #{count}, count_up => #{count_up}"
    :timer.sleep(sleep_msec)
    count = count + count_up
    loop(count, count_up, sleep_msec)
  end
end

Qiita.loop(0, 1, 1000)

まとめ

ループはサクッとできたき個人的にはElixirにも馴染んできたのかなぁと実感できたのと、sleepのやり方を調べて実装できたのが収穫