Programming Clojure学习笔记——开始

本文介绍如何在Clojure中加载和使用库,并通过多种方式查询库文档,包括使用doc函数获取详细信息、find-doc进行模糊搜索以及查看源码等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.3 探究Clojure库
Colujure代码都打包进库,每个库属于一个命名空间namespace,命名空间类似Java包。可以使用require来加载Clojure库:
(require quoted-namespace-symbol):
user=> (require 'examples.introduction)
nil
说明:前导单引号必须,它将库名引起来

使用库中函数
user=> (take 10 examples.introduction/fibs)
(0 1 1 2 3 5 8 13 21 34)

为了方便库中函数引用,可以引用命名空间,在当前命名空间中生成引用命名空间中所有名称的映射,这样在当前命名空间中就可以直接使用引用命名空间中的函数等,不需要带空间名前缀。
(refer quoted-namespace-symbol):
user=> (refer 'examples.introduction)
nil
user=> (take 10 fibs)
(0 1 1 2 3 5 8 13 21 34)
说明:REPL中默认命名空间为user

为了方便可以使用use函数一步完成require和refer库
(use quoted-namespace-symbol):
user=> (use 'examples.introduction)
nil
user=> (take 10 fibs)
(0 1 1 2 3 5 8 13 21 34)
说明:use函数加上:reload-all标识可以强制重新加载库

查找文档
1. 最基本的帮助函数doc
(doc name)
user=> (doc str)
-------------------------
clojure.core/str
([] [x] [x & ys])
  With no args, returns the empty string. With one arg x, returns
  x.toString().  (str nil) returns the empty string. With more than
  one arg, returns the concatenation of the str values of the args.
nil
说明:
(1) doc函数的返回值第一行输出函数的全名称命名空间+函数名
(2) 第二行输出函数的参数列表
(3) 第三行输出函数的doc-string(函数注释位于函数名后,参数列表前)

2. find-doc函数模糊查询
(find-doc s)

参数命名惯例:
Parameter Usage
a A Java array
agt An agent
coll A collection
expr An expression
f A function
idx Index
r A ref
v A vector
val A value

3. 查看Clojure函数源码
(clojure.contrib.repl-utils/source a-symbol)
user=> (use 'clojure.contrib.repl-utils)
nil
user=> (source identity)
(defn identity
  "Returns its argument."
  [x] x)
nil

4. 枚举Java对象属性和方法
(clojure.contrib.repl-utils/show obj)
user=> (show java.util.HashMap)
===  public java.util.HashMap  ===
[ 0] ()
[ 1] (Map)
[ 2] (int)
[ 3] (int,float)
[ 4] clear : void ()
[ 5] clone : Object ()
[ 6] containsKey : boolean (Object)
其他省略不列出
说明:由于Clojure对象都是Java对象,因此也可以使用show函数来查看Clojure形式内部的Java API。如
user=> (show #{})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值