`
no7beckham
  • 浏览: 94977 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

require,use&import in clojure

 
阅读更多

在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)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics