这是我尝试添加规范的代码。
@spec failure(term) :: error(term)
@spec failure(reason) :: error(reason) when reason: term
defmacro failure(reason) do
quote do
{:error, unquote(reason)}
end
end
第一个规范定义工作正常。但是我想更清楚一点,如果原因是一个整数,那么返回的错误也将包含一个整数。第二个规范不起作用。错误是
Compiling 1 file (.ex)
== Compilation error in file lib/ok.ex ==
** (CompileError) lib/ok.ex:71: spec has wrong arity
(stdlib) lists.erl:1338: :lists.foreach/2
(stdlib) erl_eval.erl:677: :erl_eval.do_apply/6