はじめに
- 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が空の場合に特別な値を返したい
- きっと第●引数に指定するやり方があるだろうと、
IEx
でh Enum.min
と聞いてみるわけです - やはり、ありました
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
に教えてもらう- それでも答えたが見つからない場合は?
- elixir.jp Slackで聞いてみる
- 私は以下のコミュニティによく参加させてもらっています
- Enumモジュールはよく使うものだとおもわれますので仲良くなっておくとよいです
- Enjoy Elixir!!!