Clojure ns require use import

ns

ns用来定义当前的命名空间,可以配合import,require,use进行使用。

1
2
3
4
5
6
(ns foo.bar
(:refer-clojure :exclude [ancestors printf])
(:require [clojure.contrib sql sql.tests])
(:use [my.lib this that])
(:import [java.util Date Timer Random]
(java.sql Connection Statement)))

require

require 是将clojure load进入当前的命名空间,会跳过已经load进来的lib。 :require可以配合 :as, :only, :include, :exclude, :refer, :all等等一起使用。

1
2
3
4
5
6
7
;; alias clojure.java.io as iouser=> (require '[clojure.java.io :as io])nil

user=> (io/file "Filename")#<File Filename>

;; alias clojure.java.io as io using prefixesuser=> (require '(clojure.java [io :as io2])nil

user=> (io2/file "Filename")#<File Filename>

use

use与require作用类似,但除了将libs load进入之外,还使用clojure.core/refer refer他们的namespaces。可以配合:exclude, :only, and :rename使用。

1
2
3
4
5
6
(ns some.namespace
(:require [clojure.contrib.json :as json])
(:use [clojure.string :only [trim lower-case split]]
[clojure.contrib.shell-out]
[clojure.pprint]
[clojure.test]))

import

import主要用来加载java类。

1
2
3
4
5
6
7
(import & import-symbols-or-lists)
import-list => (package-symbol class-name-symbols*)
(ns foo.bar
(:import (java.util Date
Calendar)
(java.util.logging Logger
Level)))