gpt4 book ai didi

clojure - 传递给Clojure函数的参数数量错误

转载 作者:行者123 更新时间:2023-12-03 15:32:25 26 4
gpt4 key购买 nike

更多Clojure怪异。我正在尝试定义和调用此函数。它有3个参数,但是当我用3个参数调用时,我得到了

Wrong number of args (1) passed to: solr-query$correct-doc-in-results-QMARK-$fn
[Thrown class clojure.lang.ArityException]

当我用2个参数调用它时
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))))

这就是我试图调用它的方式(从REPL在emacs中使用swank):
(correct-doc-in-results? "FLASHLIGHT" all-queries "60184")

有人知道发生了什么吗?为什么当我传递3时我只传递1个参数,却正确地传递2或4个参数呢?我不是一个非常熟练的Clojure程序员,但是定义一个函数是非常基本的。

最佳答案

注意之间的区别
solr-query$correct-doc-in-results-QMARK-

solr-query$correct-doc-in-results-QMARK-$fn
第一个引用您的函数correct-doc-in-results?。后者指的是在该函数内部定义的一些匿名函数。

如果传递2或4个参数,则您的顶级函数会收到错误消息,这与预期的一样。传递3个参数时,您会收到#(.equals docid)的错误消息,因为o​​jit_code希望有零个参数,但得到一个。尝试将其更改为#(.equals docid)

关于clojure - 传递给Clojure函数的参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7919959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com