繁体   English   中英

万能药中的宏

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM