当前位置: 首页 > 知识库问答 >
问题:

“没有单一的方法[...]找到函数”试图使用协议

温源
2023-03-14

我有一个Clojure库,它定义了MQHandle协议,并对其进行了扩展

(ns example.mq
  (:import [java.util.concurrent BlockingQueue]))

(defprotocol MQHandle
  (send-message [this key body & params])

(extend-type BlockingQueue
  MQHandle
  (send-message [this key body & params]
    (.put this (merge {::key key, ::body body}
                      (into {} (partition 2 params)))))

(defn get-handle ^BlockingQueue [& config]
   "return a BlockingQueue tied to a thread which consumes messages
   and submits them to a remote message queue"
   ...)

...但是当我试图使用它时:

(require '[example.mq :as mq])

(def handle (mq/get-handle config))

(satisfies? mq/MQHandle handle)
; => true

(mq/send-message handle "key" "body")
; java.lang.IllegalArgumentException: No single method: send_message of interface:
;  com.indeed.clojure_network_repl.mq.MQHandle found for function: send-message of
;  protocol: MQHandle

我不想知道这个例外的意义,或者我应该做什么不同的事情。

共有1个答案

太叔景曜
2023-03-14

协议函数不支持rest参数。

 类似资料:
  • [这不是从JSON字符串中不能实例化类型值的重复;没有单字符串构造函数/工厂方法:这是一个简单得多的POJO和JSON。在我的情况下,解决方案也不同。] 我要从中解析和创建POJO的JSON: 如果响应碰巧是一个错误,它看起来像: 以下是我定义的POJO: 注释(告诉Lombok自动为类生成getter、setter、和方法)和(告诉Lombok以可以链接的方式生成setter)来自Lombok项

  • 我正在使用安装在本地主机上的wordpress构建一个站点。 出于某种原因,我的post.php页面没有显示帖子缩略图(特色图片)。我已经确定,这是一个问题,timthumb.php这是不正确的定位图像网址。我在网上搜索了几个小时,尝试了许多解决方案,但似乎没有任何效果。 基本问题是我在blog.php文件中的这一行: My functions.php脚本将get_image_url定义如下: 在

  • 主要的 维京阶层 人类阶级 饮料和小便界面是一样的

  • 我对Clojure很陌生,玩得很开心。有一件事我遇到了一些麻烦,那就是如何阅读错误,我个人认为它们不是很具有描述性,但这可能是由于我的“新手”。 例如,我现在遇到的问题是当我尝试启动我的环形服务器时(如果需要,我可以提供更多详细信息): 这对我来说太模糊了,我怎么知道我做错了什么?我不记得和任何“制造阅读器”、协议或IOFactory打过交道。

  • 我正在运行一个应用程序,可以在选择或捕捉它们后查看多个图像。当我运行应用程序时,ImageView部分似乎有问题,它说: