当前namespace
*ns* 指向的是当前namespace,通常是user. 不过如果在自己应用程序,比如我的my-website目录下运行lein repl,然后在运行*ns*,得到的当前namespace就不不是user,而是:
my-website.server=> *ns* #<Namespace my-website.server>
有几种方法,最简单的是用ns宏。
下面创建了一个文件config.clj
(ns my-website.config) (def load_config (fn [name] (load-file (str "/opt/" name)))) (def host (fn [name] (:mongodb (load_config name))))
如何使用呢?在test.clj文件中:
(ns my-website.rest.test (:require [noir.response :as response]) (:use [noir.core :only [defpage]]) (:use [my-website.config :as config])) (defpage "/rest/:id" {:keys [id]} (response/json {:userId id})) (defpage "/rest/file/:name" {:keys [name]} (str "mongodb host: " (config/host name)最后一个:use语句引入这个namespace, 并且起了别名为config,
然后调用host函数就可用(config/host ...)
namespace还有很多细节。以后会更新,不过目前能够帮助我将代码按照namespace的方式写在不同的文件中。