简单的标题是:
我为什么要这样做
(require 'clojure.edn)
Run Code Online (Sandbox Code Playgroud)
为了使用例如:
(clojure.edn/read-string "9")
Run Code Online (Sandbox Code Playgroud)
为什么我可以立即调用:
(clojure.string/join (range 4) "-")
Run Code Online (Sandbox Code Playgroud)
Clojure程序从"主"命名空间(通常是project-name.core)的顶部开始,并从上到下评估每个表单.这在程序启动时以及在调用任何"主"函数之前发生.
当require评估表达式时,它会跳转到该命名空间并在那里执行相同的操作.如果遇到需求,则会递归这些命名空间的分支,根据需要递归加载每个命名空间.
因此,如果您没有明确声明您的命名空间需要另一个命名空间,那么您将需要加载其依赖项的其他namspace的顺序.有时它会起作用,有时对远程依赖项的评估顺序进行无关的更改会破坏您的代码.
所以请,请...声明自己的要求!
在 repl (刚刚开始clojure)中,我默认加载了以下 ns
user=> (pprint (map #(.getName %) (all-ns)))
(clojure.edn
clojure.core.server
clojure.java.io
clojure.java.shell
clojure.core.protocols
clojure.string
clojure.java.browse
clojure.pprint
clojure.uuid
clojure.core
clojure.main
user
clojure.java.javadoc
clojure.repl
clojure.walk
clojure.instant)
Run Code Online (Sandbox Code Playgroud)
无论您在哪个命名空间中,clojure.edn似乎都没有被加载
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |