私はuse
のエリキシル剤で遊んでいます。私は別のコンストラクタ(マップ&キーワードを)置いエリクサーの引数としてマップを正しく配置できないのはなぜですか?
defmodule Alex do
use Included,
names: [:helen, :rebekka],
states: [
%{
:name => :start
}, [
name: :finish
]
end
だけの違いを示すために:私は一つのことを理解することはできません。私は私に値を返す単純なエリクシルのモジュールがあります。
defmodule Included do
demacro __using__(opts) do
IO.puts Keyword.get(opts, :names) # => [:helen, :rebekka]
IO.puts Keyword.get(:states) # => [{:%{}, [line: 8], [name: :start]}, [name: :finish]]
end
end
私はこの奇妙なマップを受け取りなぜ、どのように私は私のモジュールで法線マップを得ることができますか?
二つの提案を出力します
この:しかし、あなたは予想通り
quote
内の引用符で囲まれていないマップを使用することができますが、マクロで遊ぶ前に、1)エリクシール詳細については、こちらをご覧ください。マクロを使用せずにやりたいことをいくつか行う方法があり、マクロ以外にも何かを使うことは、コードを維持できるという観点からはるかに優れたアプローチです。 2.マクロを習得したい場合は、件名に関する素晴らしい本があります:https://pragprog.com/book/cmelixir/metaprogramming-elixir –@OnorioCatenacci私はDave Thomasのプログラミングエリクサー全体を読んでいます; hehe;)ありがとう提案のために – asiniy