2016-09-22 8 views
0

私は、同じファイル内aliasいくつかのモデルに必要といつものようにそれをやったときに、それは私のファイルに見える多くのスペースを取っている:エイリアス複数の名前

alias Project.Model1 
alias Project.Model2 
... 
alias Project.ModelN 

私はドキュメントに見て、私はそれがこのようにそれを行うことは可能だとは思わない:

alias (Project.Model1, Project.Model2,...,Project.ModelN) 

私はこのようにそれを実行する必要があります:

alias Project.Model1 alias Project.Model2 ... alias Project.ModelN 

または代替手段がありますか?

+1

'エイリアスプロジェクト{Model1、Model2、...、ModelN}'が動作するはずです。 – arpit

+0

@arpit、共有いただきありがとうございます。 – mudasobwa

答えて

6

あなたはそれを行うには中括弧を使用することができます。

alias Project.{Model1,Model2,Model3} 

http://elixir-lang.org/getting-started/alias-require-and-import.html#multi-aliasimportrequireuse

+0

しかし、私はそれがドキュメントに反映されているとは思わない...それは?問題を開くことが良いと思いますか? –

+0

ええ、それは欠けているようです、問題を開く良いアイデア!あなたが将来の訪問者のためにここの問題にリンクすることができればうれしいです。 –

1

この特定のタスクについては、@ patrick-oscityの回答を参照してください。

Kernel.alias/2は、モジュールと、オプションのKeywordと、as[as: ...]の2つのパラメータを受け入れるマクロです。だから、あなたの質問に簡単な答えがある

「あなたがすることはできません。」

なぜあなたはあなたのコードの将来の読者を絡ませるでしょうか? Elixirスタイルのガイドを使用し、1行につき1エイリアスを貼り付けてください。


UPDあなたはまだ1行ですべてのエイリアスをリストしたいが、独自のマクロを定義するには:

defmacro aliases(macros) when is_list(macros) do 
    for macro <- macros do 
    quote do 
     alias unquote(macro) 
    end 
    end 
end 
+0

まあ、私は本当にエリクサーがトップの言語であり、数ビットを除いてすべてに同意すると思います。この中で私は、私の画面のほとんどを本当の状態にすることは、スーパークリーンなコードより価値があると思う。私の目標は、1つの画面でコードロジックの最大値を確認し、上下にスクロールして取得する必要がないことです。そして、 'alias'は' as: 'を使わないと間違いの可能性のない単純な単純な概念なので、これは貴重なものになると私は確信しています。 –

+0

それから、エリクシールの力を使い、あなた自身のマクロ 'defmacro aliases'を宣言し、プレーンリストを受け取り、' alias'マクロの束を作ります:) – mudasobwa

+0

アップデートを見てください。 – mudasobwa