2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Enum.min(enumerable)でenumerableが空の時に値を返したい(Elixir)

Posted at

はじめに

  • Elixirで整数のリストがあって最小値を求めたいときにはEnum.minを使います
  • 第一引数のenumerableが空の場合に特別な値を返したいときにはどうすればよいでしょうか
  • 公式ドキュメントに書いてある通りのことそのままではありますが調べたことを書いておきます
iex> [1,2,3,4,5] |> Enum.min
1

iex> [] |> Enum.min
** (Enum.EmptyError) empty error
    (elixir 1.10.4) lib/enum.ex:1746: anonymous fn/0 in Enum.min/1
  • 第一引数のenumerableが空の場合にEnum.min([])というような呼び出し方をするとEnum.EmptyErrorが発生します
  • 「最小のものを出力しなさい。ただし最小のものがない場合には-1を出力しなさい」みたいなことを言われた時にたとえばこんなふうには書きたくありません
if Enum.empty?(enumerable), do: IO.puts(-1), else: Enum.min(enumerable) |> IO.puts()

enumerableが空の場合に特別な値を返したい

  • きっと第●引数に指定するやり方があるだろうと、IExh Enum.minと聞いてみるわけです
  • やはり、ありました :tada::tada::tada:
iex> enumerable = []
[]

iex> Enum.min(enumerable, fn -> -1 end)
-1

iex> Enum.min(enumerable, fn -> -1 end) |> IO.puts()
-1
:ok

Wrapping Up

  • ElixirでわからないことがでてきたときはIExに教えてもらう
  • Enumモジュールはよく使うものだとおもわれますので仲良くなっておくとよいです
  • Enjoy Elixir!!!
2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?