require,use&import in clojure

本文介绍在Clojure 1.4中如何引用其他Clojure包的函数,包括全名引用、使用require建立别名以及使用use命令等方法,并展示了不同引用方式的具体示例。

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

在clojure 1.4中,引用其它clojure包函数的方法

1. 全名引用

user=> (in-ns 'myapp)
#<Namespace myapp>
myapp=> (clojure.string/capitalize "abc")
"Abc"

2. 用require建alias

myapp=> (clojure.core/require '[clojure.core :as core])
nil
myapp=> (core/require ['clojure.string :as 'str])
nil
myapp=> (str/capitalize "a")
"A"

3.使用use

user=> (in-ns 'myapp)
#<Namespace myapp>
myapp=> (range 10)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: range in this context, compiling:(NO_SOURCE_PATH:2)
myapp=> (clojure.core/use 'clojure.core)
nil
myapp=> (range 10)
(0 1 2 3 4 5 6 7 8 9)

myapp=> (use 'clojure.string)
WARNING: replace already refers to: #'clojure.core/replace in namespace: myapp,being replaced by: #'clojure.string/replace
WARNING: reverse already refers to: #'clojure.core/reverse in namespace: myapp,being replaced by: #'clojure.string/reverse
nil
myapp=> (join \- [0 1 2])
"0-1-2"

use中可以使用两个参数:only :exclude

user=> (in-ns 'myapp)
#<Namespace myapp>
myapp=> (clojure.core/use '[clojure.core :only [use]])
nil
myapp=> (range 10)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: range in
 this context, compiling:(NO_SOURCE_PATH:3)
myapp=> (first [0 1 2])
CompilerException java.lang.RuntimeException: Unable to resolve symbol: first in
 this context, compiling:(NO_SOURCE_PATH:4)
myapp=> (clojure.core/use '[clojure.core :exclude [range]])
nil
myapp=> (first [0 1 2])
0
myapp=> (range 10)
CompilerException java.lang.RuntimeException: Unable to resolve symbol: range in
 this context, compiling:(NO_SOURCE_PATH:7)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值