9

質問が些細な場合は申し訳ありませんが、グーグルで調べてもどこにも導かれません。defmultiとの一般的な構文は何defmethodですか? 単純なマルチメソッドを書くことはできますが、docstring、前後の条件、メタデータなどをどこに置けばよいかわかりません。

実はClojureよりもClojureScriptに興味があるので、両者の違いがあれば教えてください。

4

2 に答える 2

7

REPL では、関数を使用しdocて関数の引数と (ほとんどの場合) オプションの説明を取得できます。ClojureScript に関しては、これら 2 つの関数はマクロです。つまり、コンパイル時に展開され、通常の Clojure とまったく同じように動作する必要があります。つまり、ClojureScript がマクロが生成するコードを処理できる限りです。

user=> (doc defmulti)
-------------------------
clojure.core/defmulti
([name docstring? attr-map? dispatch-fn & options])
Macro
  Creates a new multimethod with the associated dispatch function.
  The docstring and attribute-map are optional.

  Options are key-value pairs and may be one of:
    :default    the default dispatch value, defaults to :default
    :hierarchy  the isa? hierarchy to use for dispatching
                defaults to the global hierarchy
nil
user=> (doc defmethod)
-------------------------
clojure.core/defmethod
([multifn dispatch-val & fn-tail])
Macro
  Creates and installs a new method of multimethod associated with dispatch-value. 
nil
于 2012-03-31T22:55:01.263 に答える
4

Clojuredocs: defmultidefmethod

十分に詳細な例が見つからない場合は、独自の例を追加することを検討してください (すべての質問への回答が得られたら)。

于 2012-04-01T08:01:11.347 に答える