Open1

Elixir パターンマッチの習作

tatotato

Keywordでのガード

  • Mapと同じようにはできないから、Mapに変換して行うしかなさそう
  • 例えば、hello(hoge: "hoge", a: 2)hoge: "hoge" でパターンマッチしたい
  def hello(opts = [hoge: "hoge"]), do: "HIT"
  def hello(opts), do: "MISS"

上記ができないので、Mapで扱うようにする

  def hello(opts) when is_list(opts), do: hello(Map.new(opts))
  def hello(opts_m = %{hoge: "hoge"}), do: "HIT"
  def hello(opts_m), do: "MISS"
  • // はたして使うことがあるかどうか