って %_{}
とのマッチングでいけるんですね
例
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現在問題なくなってる わーい(%
のあとに大文字か{
以外が来てたら下線が引かれてしまってた)