簡體   English   中英

如何使用clojure doc函數?

[英]How to use clojure doc function?

我只是從Clojure開始,無法訪問doc函數。

我正在將clojure 1.3與emacs24和swank-clojure一起使用。

user> *clojure-version*
{:major 1, :minor 3, :incremental 0, :qualifier nil}

但是當我嘗試:

(doc doc)

我得到:

Unable to resolve symbol: doc in this context
[Thrown class java.lang.RuntimeException]

我已經閱讀了為什么REPL會將clojure.core / doc視為var? 並建議:

(clojure.repl/doc doc)

但是然后,我收到:

clojure.repl
[Thrown class java.lang.ClassNotFoundException]

看來我不是在“導入”常用的名稱空間,但實際上不知道該怎么做。

謝謝。

更新

使用Java中的clojure(java -jar ...)效果很好,因此emacs設置存在問題。

您需要以一種或另一種方式獲取clojure.repl命名空間:

來自REPL

user> (use 'clojure.repl)
user> (doc doc)

或在您的程序中

(ns foobar
  (:use [clojure.repl]))

將以下內容添加到您的Leiningen user.clj文件中(在Mac / Linux上為〜/ .lein / user.clj):

;; ~/.lein/user.clj
(if (>= (.compareTo (clojure-version) "1.3.0") 0)
  (do (use 'clojure.repl)
      (use 'clojure.java.javadoc)))

對於使用Clojure 1.3.0及更高版本的項目,這將導致Leiningen在啟動時自動導入這兩個名稱空間(但對於使用Clojure 1.2.1或更早版本的項目,則不會導入該名稱空間-doc和源始終可用)。

這要歸功於馬修·波士頓 還請注意, Phil Hagelberg的答復指出大多數REPL特定功能可以在Emacs / Slime中直接訪問,而無需直接在REPL中使用。

從Lein 2開始,可以使用 :injections在啟動時自動導入名稱空間,例如:

 
 
 
  
  ;; ~/.lein/profiles.clj {:user {:plugins [[lein-swank "1.4.4"] [lein-noir "1.2.1"] [lein-pprint "1.1.1"]] :injections [(use 'clojure.repl) (use 'clojure.java.javadoc) (use 'clojure.pprint)] }}
 
  

但是,請參閱其他與SLIME等效的響應。

is available at the repl by default. 我不確定當這成為案件的,但作為雷音的2.2 可在默認情況下,REPL。

暫無
暫無

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

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