簡體   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