龙空技术网

Clojure命名空间

从头开始自学java 99

前言:

目前朋友们对“java命名空间”大致比较着重,姐妹们都想要学习一些“java命名空间”的相关内容。那么小编同时在网摘上汇集了一些对于“java命名空间””的相关文章,希望咱们能喜欢,咱们快快来学习一下吧!

命名空间

根绑定存在于命名空间中。

提示符user=>说明当前正工作在user命名空间下。user为一个用于探索性开发的临时命名空间。

当Clojure解析名称foo时,它会用当前命名空间user对foo进行命名空间限定(namespace-qualifies)。

resolve会返回在当前命名空间中,解析符号得到的变量或是类。

使用in-ns来切换命名空间,必要时Clojure还会新建一个新的。

创建一个myapp命名空间。

现在已经位于myapp命名空间中了,这时候def或defn的任何东西都将属于myapp。当使用in-ns新建了一个命名空间时,Clojure会自行导入java.lang包。

每当转移到一个新的命名空间时,都应该立即使用use来导入clojure.core命名空间,这样Clojure的核心函数才能在这个新的命名空间中使用。

默认情况下,java.lang以外的其他类都必须使用全限定名。

相反,必须指定全限定的 java.io.File。

倘若不想使用全限定类名,可以使用import把一个或者多个类名从Java包映射到当前命名空间中。

一旦导入了一个类,就可以使用其短名称了。

import仅用于Java类。

使用另一个命名空间中的Clojure变量,同样也需要采用其全限定名,或者将其名称映射到当前空间中。

为了在当前命名空间中引入split别名,可以包含对split的命名空间clojure.string调用require,并用str用作其别名。

require会把clojure.string中所有的公共变量引入到当前命名空间内,并且还可以通过别名str来访问它们。

不过,这可能会令人感到有些困惑,因为引入了哪些名称其实并不明确。

作为惯例,在一个Clojure源文件的顶部,使用ns宏来import Java类和require命名空间。

ns宏将当前命名空间(可通过*ns*获取)设置为name,必要时还会创建这个命名空间。references部分则可以包含:import、:require和:use。它们的工作方式与各自对应的同名函数类似。这样仅需要一个形式,就可以完成命名空间映射相关的所有设置。

切换到user命名空间并查询相关文档

标签: #java命名空间 #java 命名空间 #java命名空间方式实现 #java命名空间方式实现什么意思