2016-03-26 9 views
1

したがって、私はモジュールUploader.ServerとモジュールUploader.Utilityでプロジェクトをミックスしています。エリクシール:別のモジュールのメソッド/マクロへのショートカットアクセス

Uploader.Utilityは、requestマクロを定義します。問題は私がUploader.Serverでこれのようにアクセスすることができないことです、私はUploader.Utility.requestと呼ぶことができます。サーバモジュールがシェルインターフェイスを提供し、コマンドの共通引数になるため、非常に不便です。

私はこのマクロをUploader.Serverモジュールに入れても構いませんが、論理的にはそこに属しません。

このマクロUploader.Serverに何らかの形でアクセスするには、内部の名前だけでなく、外部ではなくエイリアスのようなものを使用できますか?

答えて

2

あなたはKernel.SpecialForms.import/2を探しています。

例:

defmodule Uploader.Utility do 
    defmacro request(name) do 
    quote do 
     def unquote(name)(), do: :ok 
    end 
    end 
end 

defmodule Uploader.Server do 
    require Uploader.Utility 
    import Uploader.Utility, only: [request: 1] 

    request(:hello) 
end 

IO.inspect Uploader.Server.hello 

プリント

:ok 
関連する問題