2

Java クラスで表される clojure 構造に対してのみ clojure マルチメソッドを使用できるのか、それとも構造体またはその他のプロパティに対してディスパッチするためにマルチメソッドをベースにできるのかについて、少し混乱しています。

4

3 に答える 3

4

最初の引数または唯一の引数のクラスにディスパッチするマルチメソッドを作成することは非常に一般的です。この場合、「クラス」はJavaクラス、レコード(defrecordはJavaクラスを生成します)、またはISeqのような内部Clojureタイプである可能性があります。

関数に渡されたargsの任意の関数にディスパッチすることもできます。たとえば、必要に応じて、関数を計算し、キーワードをディスパッチできます。

于 2011-01-01T22:20:54.883 に答える
3

引数の任意の関数にマルチメソッドをディスパッチできます(その関数は2番目の引数として渡されdefmultiます。http://clojure.org/multimethodsに詳細が記載されています。

于 2011-01-01T21:45:28.800 に答える
2

選択した任意の関数でマルチメソッドをディスパッチできます。

于 2011-01-01T23:57:06.617 に答える