タグ

2016年1月14日のブックマーク (1件)

  • Elixir: Macro入門 - Qiita

    たしかに、f を定義していないですが、ドキュメント のとおりで、前に同じように書いたときは動いていました。 Ecto のバージョンを確認したり、いろいろ調べた結果、import Ecto.Queryを忘れていただけという単純なミスでした。 しかし、定義されていない f が使えていることが理解できていないことに気づき調べました。 マクロ Ecto.Query.select のコードを確認するとマクロであることが分かります。 使う側からすると見た目が似ている関数とマクロですが、実際は渡ってくるパラメータや戻り値の意味が大きく異なります。 同じものをマクロと関数で実装し確認します。 defmodule Sample do defmacro sample_macro(param) do IO.puts "### sample_macro ###" IO.inspect param "" end d

    Elixir: Macro入門 - Qiita