2016-09-09 44 views

回答

1

這是一個有點混亂。

ns形式,要使用關鍵字版本(:require ...),如:

(ns clj.core 
    (:require [tupelo.core :as t])) 

您應該考慮做事情的這種「正常」的方式。

另一個版本,沒有冒號,是功能可以在REPL的情況下,叫你不能或不想使用ns形式的同名。這看起來像:

> lein repl 
user=> (require '[tupelo.core :as t]) 
nil 
user=> (t/append [1 2 3] 4) 
[1 2 3 4] 

請注意:對於REPL /功能版本,您還必須引用包含命名空間規格的載體。請注意,我們沒有使用:require引用ns版本中的規範。

作爲替代方案,如果你已經在編輯器中,只是想在REPL來測試一些快速的,可以切割/從你的文件的頂部進入REPL粘貼整個ns形式:

> lein repl 
user=> (ns clj.core 
    #_=> (:require [tupelo.core :as t])) 
user=> 

比手動輸入功能版本更容易且更容易出錯。

對於一個很好的概述,請參閱近期的一篇博客在這裏:https://stuartsierra.com/2016/clojure-how-to-ns.html

+0

另請參閱[這個線程(https://groups.google.com/forum/#!topic/clojure/mIlKaOiujlo)。 –

+0

只需要清楚:使用REPL中的函數形式'(use ...)'和'(require ...)'是完全可以接受的。事實上,在這種情況下它可能是首選。但是在源代碼文件中,除非絕對不可能(例如循環依賴或其他),否則應該將所有內容放在'(ns ...)'格式中。 –

相關問題