gpt4 book ai didi

clojure - defrecord 未找到类异常

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

我有两个文件knapsack.cljcore.clj

defrecord Itemknapsack.clj 。我想在 core.clj 中使用它,但它在 cider-repl 中给我错误的java.lang.ClassNotFoundException: discrete-optimization.knapsack.Item即使我有 require对于knapsack命名空间。

代码在这里:

;; ---- knapsack.clj ---------
(ns discrete-optimization.knapsack)
;; Item record has weight and value of the Item
(defrecord Item
[weight value])


;; ---- core.clj --------
(ns discrete-optimization.core
(:require [discrete-optimization.knapsack :as KS])
(:import [discrete-optimization.knapsack Item]))

;; doing some knapsack in here.. :)
(and
(= 5 (KS/knapsack-value 5 [(Item. 3 5)]))
(= 5 (KS/knapsack-value 5 [(Item. 3 3) (Item. 2 2)])))

我的 clojure 版本是 1.5.1

解决方案:对于可移植解决方案:

使用->KS/item当提及item时在命名空间之外。

最佳答案

虽然 xsc 的答案没有错误,但我更喜欢使用由 defrecord 生成的构造函数,并避免使用 Java 构造函数和 Java import -isms。随着时间的推移/平台的增加,这可能会变得更加可移植。

;; ---- knapsack.clj ---------
(ns discrete-optimization.knapsack)
;; Item record has weight and value of the Item
(defrecord Item
[weight value])
;; The ->Item constructor is generated automatically

;; ---- core.clj --------
(ns discrete-optimization.core
(:require [discrete-optimization.knapsack :as KS]))

;; doing some knapsack in here.. :)
(and
(= 5 (KS/knapsack-value 5 [(KS/->Item 3 5)]))
(= 5 (KS/knapsack-value 5 [(KS/->Item 3 3) (KS/->Item 2 2)])))

关于clojure - defrecord 未找到类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26710756/

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