[英]Macros in elixir
我是元编程的新手。 我有一个像这样的模块
defmodule transport do
use Qber.Web, :status
some[some_option]
end
在我的web.ex
。 我已经定义了这种status
:
def status do
quote do
use Qber.Status
end
end
这是我的状态模块
defmodule Qber.Status do
@moduledoc """
"""
defmacro __using__(_options) do
quote do
code
end
end
defmacro some(options) do
quote do
options = unquote options
IO.inspect options
end
end
end
当我使用Qber.Web,:status.its时,它工作正常,但我也想将值从some
发送到状态模块中的宏,这给了传输中some
未定义的错误。 我怎样才能做到这一点?
在没有更多上下文的情况下,很难说出您到底要做什么。
但是, use
不导入函数或宏,请尝试添加import
:
defmodule Qber.Status do
defmacro __using__(_options) do
quote do
import Qber.Status
code
end
end
defmacro some(options) do
quote do
options = unquote options
IO.inspect options
end
end
end
另外,值得重复José在评论中所说的话 :
最好指出要解决的问题,因为元编程很少能解决这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.