Goal
- Elixirのマクロでdo~end記述を作る際のテンプレート
Dev-Environment
OS: Windows8.1
Erlang: OTP 19.0(Eshell v8.0)
Elixir: 1.3.0
Erlang: OTP 19.0(Eshell v8.0)
Elixir: 1.3.0
Text
マクロでdo~end記述をできるようにする際、
同一の記述を何回も使ったのでテンプレートとして残しておく。
同一の記述を何回も使ったのでテンプレートとして残しておく。
参考にしたのはExUnit(v1.2.5)のCaseマクロです。
Example:
defmodule DoEndMacroTemplate do
defmacro do_block(contents) do
contents =
case contents do
[do: block] ->
quote do
unquote(block)
end
_ ->
quote do
try(unquote(contents))
end
end
contents = Macro.escape(contents, unquote: true)
quote bind_quoted: binding do
def get_contents_result(), do: unquote(contents) end endend
Example:
defmodule UseExample do
use DoEndMacroTemplate
do_block do
true
end
end
Example:
iex> UseExample.get_contents_result
true
ただのメモです。
誰かの役に立ったら幸いです。
誰かの役に立ったら幸いです。
Bibliography
なし