【发布时间】:2017-01-17 23:54:54
【问题描述】:
【问题讨论】:
标签: clojure
【问题讨论】:
标签: clojure
这有点混乱。
在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/function 版本,您还必须引用包含命名空间规范的向量。请注意,我们没有使用:require 引用ns 版本中的规范。
或者,如果您已经在编辑器中并且只想在 REPL 中快速测试一些东西,您可以从文件顶部剪切/粘贴整个 ns 表单到 REPL:
> lein repl
user=> (ns clj.core
#_=> (:require [tupelo.core :as t] ))
user=>
这比手动输入功能版本更容易且不易出错。
如需全面了解,请在此处查看最近的博文:https://stuartsierra.com/2016/clojure-how-to-ns.html
【讨论】:
(use ...) 和 (require ...) 是完全可以接受的。事实上,在这种情况下它可能是首选。但是在你的源代码文件中,你应该把所有这些都放在(ns ...) 表单中,除非绝对不可能(例如,循环依赖或其他东西)。