Clojure:运行“use”时缺少名称空间错误在 REPL

发布于 2024-12-27 13:36:53 字数 391 浏览 0 评论 0原文

我有一个像这样开始的 .clj 文件:

(ns clojure_crawl.core)
(require '[clj-http.client :as client])
(use 'clojure.contrib.json)

后面是几个函数定义:

(defn f1 [] "" (+ 1 1))

(defn f2 [] "" (+ 2 2))

等等...

但是,当我运行命令“(use 'myfile.core :reload)”时

,我的一些函数虽然在 REPL 中可见,无法运行 do 来解决“缺少命名空间”错误。

如何添加依赖项以便 REPL 可以运行我的文件中定义的任何函数?

I have a .clj file that starts like this :

(ns clojure_crawl.core)
(require '[clj-http.client :as client])
(use 'clojure.contrib.json)

Followed by several function definitions :

(defn f1 [] "" (+ 1 1))

(defn f2 [] "" (+ 2 2))

etc...

However, when I run the command "(use 'myfile.core :reload)"

Some of my functions , although visible at the REPL, cannot run do to "missing namespace" errors.

How do I add the dependencies so that the REPL can run any of the functions defined in my file ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝眸 2025-01-03 13:36:53

如果您的代码位于“clojure_crawl/core.clj”中,则其命名空间应为 clojure-crawl.core(注意连字符)。请参阅http://clojure.org/libs

If your code is in "clojure_crawl/core.clj", its namespace should be clojure-crawl.core (note the hyphen). See http://clojure.org/libs

昔梦 2025-01-03 13:36:53

正如 Joost 已经说过的,你必须小心使用连字符和下划线:无论你在命名空间名称中使用连字符,请将其替换为相应文件/目录名称中的下划线(反之亦然)。

此外,不鼓励在 clj 源文件中使用 requireuse 函数。相反,直接在 ns 宏中声明您需要的库:

(ns clojure-crawl.core
  (:require [clj-http.client :as client])
  (:use clojure.contrib.json))

这还需要您正确引用所需的命名空间。

As Joost already said, you have to be careful with hyphens and underscores: wherever you use a hyphen in your namespace names, replace it with an underscore in the corresponding file/directory names (and vice versa).

Also, the use of the require and use functions in clj source files is discouraged. Instead, declare the libraries you need directly in the ns macro:

(ns clojure-crawl.core
  (:require [clj-http.client :as client])
  (:use clojure.contrib.json))

This also takes the burden of properly quoting the required namespaces from you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文