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 | ;; alias clojure.java.io as iouser=> (require '[clojure.java.io :as io])nil |
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)))