Clojureの奇妙さ。私はこの関数を定義して呼び出しようとしています。それは3つの引数を持っていますが、私は3つの引数でそれを呼び出すとき、私は、私は2つの引数でそれを呼び出すときClojure関数に渡された引数の数が間違っています
Wrong number of args (1) passed to: solr-query$correct-doc-in-results-QMARK-$fn
[Thrown class clojure.lang.ArityException]
を取得し、私は
Wrong number of args (2) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
を取得し、私は4つの引数でそれを呼び出すとき、私は
を取得ここWrong number of args (4) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
は、関数の定義である:
(defn correct-doc-in-results? [query results docid]
"Check if the docid we expected is returned in the results"
(some #(.equals docid) (map :id (get results query))))
と、ここで私は(emacsの中スワンクを使用してREPLから)それを呼び出すようにしようとしている方法です:
(correct-doc-in-results? "FLASHLIGHT" all-queries "60184")
誰もが何が起こっているか任意のアイデアがありますか?私は3を渡すときに1つの引数を渡すだけだと思うのですが、2または4のためにはそれを正しく取得するのはなぜですか?私は非常に流暢なクロージャーのプログラマーではありませんが、関数を定義することはかなり基本的です。最初はあなたの関数correct-doc-in-results?
指す差
solr-query$correct-doc-in-results-QMARK-
と
solr-query$correct-doc-in-results-QMARK-$fn
間
もちろん。簡単な説明をありがとう。 –
@Brian実際には、無名関数はゼロのargs(%はありません)を望んでおり、 'some'によって呼び出されたときに無名関数が取得されているためです。もちろん、関数が実際に引数なしで呼び出された場合、引数が1つしかない '.equals'を呼び出すことによって別のエラーが発生します。 – amalloy
あなたが正しいです、私は私の答えを編集します。 –