【Clojure 基本知识】 ns宏的 指令(关键字) requrie的用法
指令(:require)用在(ns)之中,下面是实践中总结的几种用法(下文中省略ns宏,只是给出:require的代码):
一、导入完整名称空间。
1,最简单的形式:
(:require clojure.data.json)
2,同时导入同一名称空间的多个子名称空间:
(:require (clj-time core format ))
以上这两种形式,导入了完整的名称空间,使用起来就比较麻烦了,比如调用clojure.data.json的read-str函数:
(clojure.data.json/read-str "{\"a\":1}")
二、使用":as"关键字,给导入的名称空间起一个别名。
(:require [clojure.data.json :as json])
这样,调用其中函数时就可以使用这个别名而不是全路径了:
(json/read-str "{\"a\":1}")
同时导入多个包的语法:
(:require [clj-time.core :as time]
[clj-time.format :as timef]
[clojure.data.json :as json]
)
对于上面clj-time这种情况,导入多个子名称空间,可以这样:
(:require (clj-time [core :as time][format :as timef]) )
三、使用":refer"关键字,直接导入要使用的符号名称(这种语法一般适用于仅需要使用的名称空间中有限几个符号的情况)。
例如只导入一个:
(:require [clojure.data.json :refer read-str])
此时,“read-str”直接位于当前的名称空间,可以直接使用:
(read-str "{\"a\":1}")
同时导入多个符号名称:
(:require [clojure.data.json :refer [read-str write-str] ])
还可以使用":all"关键字,这样就和(use)宏的效果一样了,把名称空间下的所有符号直接导入到当前名称空间,这是不推荐的,很容易引起冲突!例如:
user=> (:require [clojure.data.json :refer :all])
IllegalStateException pprint already refers to: #'clojure.pprint/pprint in namespace: user clojure.lang.Namespace.warnOrFailOnReplace (Namespace.java:88)
【Clojure 基本知识】 ns宏的 指令(关键字) requrie的用法的更多相关文章
- 【Clojure 基本知识】 关于函数参数的各种高级用法
关于Clojure函数参数用法,学习中一些总结,无废话,直接看代码: 一.接受不定参数 ;;接受不定参数 (defn f0[& pms] (println "params count ...
- JSP的学习(5)——语法知识三之include指令
本篇继续来对JSP语法中的JSP指令进行学习,在<JSP的学习(3)——语法知识二之page指令>中,已经介绍了JSP指令的书写格式和page指令的详细信息,所以在这一篇中我们会对JSP指 ...
- js之字面量、对象字面量的访问、关键字in的用法
一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...
- C++ new的nothrow关键字和new_handler用法
C++ new的nothrow关键字和new_handler用法 new && new(std::nothrow) new(std::nothrow) 顾名思义,即不抛出异常,当new ...
- WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化
WPF中的常用布局 一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...
- VC++/MFC 最常用宏和指令
1.#include指令 包含指定的文件,最基本的最熟悉的指令,编程中不得不用,包含库文件用双尖括号,包含自定义头文件用双引号. 2.#define指令 预定义,通常用它来定义常量(包括无参量与 ...
- [转载]学习VC MFC开发必须了解的常用宏和指令————复习一下
1.#include指令 包含指定的文件 2.#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而 ...
- 学习VC MFC开发必须了解的常用宏和指令
1.#include指令 包含指定的文件 2.#define指令 预定义,通常用它来定义常量(包括无参量与带参量),以及用来实现那些“表面似和善.背后一长串”的宏,它本身并不在编译过程中进行,而 ...
- JSP的学习(3)——语法知识二之page指令
本篇接上一篇<JSP的学习(2)——语法知识一>,继续来学习JSP的语法.本文主要从JSP指令中的page指令,对其各个属性进行详细的学习: JSP指令: JSP指令是为JSP引擎而设计的 ...
随机推荐
- 在npm上发布一个自己的包
1.首先你要在npm上创建一个账号,这里需要输入邮箱的,注意激活邮箱否则无法publish自己的包 2.在本地创建一个文件夹,输入npm init初始化项目,这里是我使用npm init创建的pack ...
- LinkedList源码分析和实例应用
1. LinkedList介绍 LinkedList是继承于AbstractSequentialList抽象类,它也可以被当作堆栈.队列或者双端队列使用. LinkedList实现了Deque接口,即 ...
- 学习 IOC 设计模式前必读:依赖注入的三种实现
一直以来就是越难的东西越值钱! 嘿嘿,这篇博文章转载自:http://www.cnblogs.com/liuhaorain/p/3747470.html 摘要 面向对象设计(OOD)有助于我们开发出高 ...
- eclipse中安装pydev插件出现duplicate location
eclipse中安装pydev插件出现duplicate location,主要是因为之前已经填写了该地址并且已经加载了,具体的解决办法见下链接: http://jingyan.baidu.com/a ...
- keras 的svm做分类
SVC继承了父类BaseSVC SVC类主要方法: ★__init__() 主要参数: C: float参数 默认值为1.0 错误项的惩罚系数.C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确 ...
- spring接入swagger后单元测试报错
2017-05-16 11:58:05.276 INFO 11268 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing ...
- Git_git diff 与 git diff -- cached 区别
1.首先,打开一个干净的工作区 2.对文件进行修改 3.使用 git diff 进行查看(这里的解释可能不是很准确,暂时这么理解!) 4. 执行 git add 将工作区中的内容add到stage, ...
- JAVA自学笔记10
JAVA自学笔记10 1.形式参数与返回值 1)类名作为形式参数(基本类型.引用类型) 作形参必须是类的对象 2)抽象类名作形参 需要该抽象类的子类对象,通过多态实现 3)接口名为形参 需要的是该接口 ...
- poj2229 Sumsets (递推)
http://poj.org/problem?id=2229 看到题目能感觉到多半是动态规划,但是没有清晰的思路. 打表找规律: #include<cstdio> #include< ...
- 附近有什么?8款可以查周边的App
如今科技发达的时代,手机的功能不仅仅只是能通讯聊天,而是逐渐的走进了人们的生活中.因为有了APP,我们的生活才更丰富,并且有很多是我们生活中不可缺少的软件,而这些软件便是根据手机中的GPS定位系统而来 ...