LoginSignup
4
2

More than 5 years have passed since last update.

ElixirでStructのパターンマッチング

Last updated at Posted at 2018-02-11

って %_{} とのマッチングでいけるんですね

iex> %_{} |> Kernel.match?(%SomeStruct{})
true

iex> %_{} |> Kernel.match?(%{})
false

https://stackoverflow.com/questions/39757796/how-to-check-if-a-map-is-also-a-struct
↑ここの回答にあって初めて知りました

ということはAtom型の値も取れるってことですもんね

iex> %module{} = %SomeStruct{}
%SomeStruct{val: nil}

iex> module
SomeStruct

考えてみれば右辺も左辺もStructの マクロ 糖衣構文が展開されて

%{__struct__: module} = %{__struct__: SomeStruct, val: nil}

になってるだけですもんね、たしかにそうだ
ちゃんと展開されているんだなぁ

 
ところでシンタックスハイライティングが変
2018/02/19現在問題なくなってる わーい(%のあとに大文字か{以外が来てたら下線が引かれてしまってた)

4
2
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
4
2