私は同じ長い署名の多くの機能を持っています(簡単にするためにここでは短縮されています):
(defn f
[x & {:keys [a b c d e f g h]
:or [a false b false c false d false e false f false g false h false]}]
a)
私は、マクロ、関数、またはdefを使用して、この共通の署名を事前に保存することを望んでいました。
(def args `[a b c d e f g h])
(defn args [] `[a b c d e f g h])
(defmacro args [] `[a b c d e f g h])
しかし、私が接続したとき、それらのすべて
(defn f
[x & {:keys (args)
:or [a false b false c false d false e false f false g false h false]}]
a)
次のようなエラーが発生しました
CompilerException java.lang.RuntimeException: Unable to resolve symbol: a in this context, compiling:(NO_SOURCE_PATH:1)
だから私の2つの質問は次のとおりです。
そのような一般的なものを定義して使用する方法はあります
args
か?そのようなanを定義できる場合は、 params
args
を取得するためにそれを減らしたいと思います。これはどのように行われますか?(の作業定義が奇妙で、これがもはや単純ではない場合に備えて、私は尋ねています。):or
[a false b false c false d false e false f false g false h false]
args