簡體   English   中英

Clojure:在REPL中運行“使用”時缺少命名空間錯誤

[英]Clojure : missing namespace errors when running “use” at the REPL

我有一個.clj文件,它的開頭是這樣的:

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

隨后是幾個函數定義:

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

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

等等...

但是,當我運行命令“(使用'myfile.core:reload)”時

我的某些功能盡管在REPL上可見,但無法運行以解決“缺少名稱空間”錯誤。

如何添加依賴項,以便REPL可以運行文件中定義的任何功能?

如果您的代碼位於“ clojure_crawl / core.clj”中,則其命名空間應為clojure-crawl.core(注意連字符)。 參見http://clojure.org/libs

如Joost所說,您必須注意連字符和下划線:無論您在名稱空間名稱中使用連字符,都應在相應的文件/目錄名稱中用下划線替換(反之亦然)。

另外,不建議在clj源文件中use requireuse函數。 而是直接在ns宏中聲明所需的庫:

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

這也負擔了正確引用您所需的名稱空間的負擔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM