【发布时间】:2018-10-19 22:39:08
【问题描述】:
我的宏有以下定义
defmacro defverified(sign, body) do
{name, _, [param]} = sign
quote do
def unquote(name)(unquote(param)) do
unquote(param) = verify! param
unquote(body)
end
end
end
如果verify!/1 被验证为正确的参数,则返回其参数
而我的函数定义如下
defverified toto(p) do
IO.inspect p
end
并且检查p 的内容是正确的,但是函数的返回是我的变量的引用形式。
iex(3)> res = Toto.toto(1)
1
[do: 1]
iex(4)> res
[do: 1]
是否可以为我的函数的返回提供一个不带引号的表单,或者我应该手动取消引用它?
我希望我的函数有以下输出
iex(3)> res = Toto.toto(1)
1
1
iex(4)> res
1
【问题讨论】: