gpt4 book ai didi

Clojure 需要命名空间 : "Don' t know how to create ISeq from: clojure. lang.Keyword"

转载 作者:行者123 更新时间:2023-12-04 16:18:40 26 4
gpt4 key购买 nike

我试图将代码分成 2 个文件,每个文件都有自己的命名空间。关注此 tutorial .

但我收到此错误:
线程“main”中的异常 java.lang.IllegalArgumentException:不知道如何从以下位置创建 ISeq:clojure.lang.Keyword

我认为这是因为没有正确识别包含的命名空间。

主文件:

(ns mytest2.handler
(:use compojure.core)
(:require [compojure.handler :as handler]
[compojure.route :as route]
[mytest2.views :as foo] ;<-- line causing error
[hiccup.core :refer (html)])
)



(defn layout [title & content]
(html
[:head [:title title]]
[:body content]))

(defn main-page []
(layout "My Blog"
[:h1 "My Blog"]
[:p "Welcome to my page"]))

(defroutes app-routes
(GET "/" [] (main-page))
(route/resources "/")
(route/not-found "Not Found"))

(def app
(handler/site app-routes))

; (println (seq (.getURLs (java.lang.ClassLoader/getSystemClassLoader))))

第二个文件:
(ns mytest2.views
:require [hiccup.core :refer (html)]
)

(defn layout [title & content]
(html
[:head [:title title]]
[:body content]))

(defn main-page []
(layout "My Blog"
[:h1 "My Blog"]
[:p "Welcome to my page"]))

(请注意,我从 mytest2.handler 中的 mytest2.views 中复制了用于测试的函数。它们不应该在 mytest2.handler 中)。

文件路径:

/mytest2/src/mytest2/handler.clj

/mytest2/src/mytest2/views.clj

(其中第一个 mytest2 是项目名称,第二个是路径的一部分 - 由 lein 自动创建)。

正如您在第一个文件中看到的,我打印了类路径以验证是否包含/mytest2/src/mytest2/,是的。

最佳答案

尝试使用时收到相同的错误 :refer :all在 Clojurescript 中,这显然是违反规则的。

关于Clojure 需要命名空间 : "Don' t know how to create ISeq from: clojure. lang.Keyword",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22731525/

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