Edited at

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

More than 1 year has passed since last update.

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



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現在問題なくなってる わーい(%のあとに大文字か{以外が来てたら下線が引かれてしまってた)