gpt4 book ai didi

clojure - 为什么在 clojure 中实现协议(protocol)时出现 "Unsupported binding form"错误?

转载 作者:行者123 更新时间:2023-12-02 12:39:57 27 4
gpt4 key购买 nike

我正在尝试在我正在编写的 clojure 程序中实现带有记录的协议(protocol)。我收到的错误是“不支持的绑定(bind)形式”。

    (defprotocol query-rows
(query-text [table])
(trans-cols [table rows])
(set-max [table] [table id]))


(defrecord Submissions [data max-id]
query-rows
(query-text [table]
(gen-query-text "SubmissionId" "Valid" "Submission"))
(trans-cols [table rows]
(let
[trans-data
(->>
rows
(trans-col #(if % 1 0) :valid :valid_count)
(trans-col #(if % 0 1) :valid :non_valid_count)
(trans-col format-sql-date :createdon :date))]
(assoc table :data trans-data)))
(set-max
([table]
(when-let [id (gen-get-max "SubmissionAgg2")]
(assoc table :max-id id)))
([table id] (assoc table :max-id id))))

“set-max”函数是引发错误的原因。我有一种感觉,我试图错误地使用多个数量。有谁知道我做错了什么?

最佳答案

您已经正确诊断了问题。您需要按照 http://clojure.org/protocols 中的示例进行操作并在 defrecord 主体中分别定义 set-max 方法的多个参数。

...
(set-max [table] ...)
(set-max [table id] ...)
...

关于clojure - 为什么在 clojure 中实现协议(protocol)时出现 "Unsupported binding form"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21357931/

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