【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引擎而设计的 ...
随机推荐
- 将map中的值赋值给一个java对象
Map tag=new HashMap(); tag.put("001"," 张三"); tag.put("002","李四&qu ...
- Eclipse Maven pom.xml 警告No grammar constraints (DTD or XML schema)
消除警告方案: <?xml version="1.0" encoding="UTF-8" standalone="no"?> & ...
- 移动游戏ui设计(二)--游戏世界的基本法则
游戏世界的基本法则游戏体验的层次感很重要,制作一款趣味性强,宗旨明确的游戏并不简单. l 风格统一性:要先明白游戏的game genres,因为游戏类型与风格密切联系.常见游戏类型有:动作类.冒险类 ...
- db2 merge update
DB2 Merge 语句的作用非常强大,它可以将一个表中的数据合并到另一个表中,在合并的同时可以进行插入.删除.更新等操作.我们还是先来看个简单的例子吧,假设你定义了一个雇员表(employe),一个 ...
- javagc日志详解
https://blog.csdn.net/aliveTime https://plumbr.io/blog/garbage-collection/understanding-garbage-coll ...
- 常见爬虫/BOT对抗技术介绍(一)
爬虫,是大家获取互联网公开数据的有效手段.爬虫.反爬虫技术.反-反爬虫技术随着互联网的不断发展,也在不断发展更新, 本文简要介绍现代的爬虫/BOT对抗技术,如有疏漏,多谢指正! 一.反爬虫/BOT技术 ...
- Docker Compose安装以及入门
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 简介 Compose 项目是 Docker 官方的开源 ...
- windows ip 缓存清理
ip缓存 ipconfig /release dns缓存 ipconfig/flushdns
- protobuf的简单使用
操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 go 版本 : go1.8.3 linux/amd64 Python 版本 : 2.7.5 libprotoc : 2.5 ...
- LIBTUX_CAT:466: ERROR: tpopen TPERMERR xa_open returned XAER_INVAL
tmboot 启动Tuxedo服务失败,从ULOG日志中看到以下错误: 100534.MATHXH!TMS_ORA10G.22600.4076.0: LIBTUX_CAT:466: ERROR: tp ...