Clojure重命名已加载的库

So8*_*res 2 clojure

有没有办法在用require或加载clojure库时重命名它们use

例如,有没有办法做某事

(require 'some.include.path.some-library :as something-else)
Run Code Online (Sandbox Code Playgroud)

然后引用some-library通过的元素something-else/element-name

谢谢.

edb*_*ond 8

看看http://clojure.org/libs:

一个包含嵌入式解释的简单库:

(ns com.my-company.clojure.examples.my-utils
  (:import java.util.Date)
  (:use [clojure.contrib.def :only (defvar-)])
  (:require [clojure.contrib.shell-out :as shell]))
Run Code Online (Sandbox Code Playgroud)
  • NS形成名字的lib的命名空间,并声明其依赖关系.根据其名称,此lib必须包含在类路径相对路径的Java资源中:com/my_company/clojure/examples/my_utils.clj(请注意从句点到斜杠和连字符到下划线的转换).
  • :进口子句声明此lib中的使用java.util.Date,并使得它在这个代码可用的lib使用其不合格的名称.
  • :使用条款声明对clojure.contrib.def LIB仅限于其defvar-功能的依赖.defvar-可以使用其非限定名称在此lib的代码中使用.
  • :要求子句声明的clojure.contrib.shell出LIB的依赖,并使用较短的命名空间别名外壳采用其成员启用.

  • 命名空间不构成层次结构.你可以做`(要求[clojure.contrib.def:as d])`然后访问例如.`defvar`为`d/defvar`.如果没有该名称的命名空间,`clojure.contrib`除了作为符号之外没有任何意义.所以你想要的是不可能的. (2认同)