Clojure重命名加载的库
当您使用Clojure重命名加载的库,clojure,Clojure,当您使用require或use加载clojure库时,有没有办法重命名它们 例如,有什么方法可以做类似的事情吗 (require 'some.include.path.some-library :as something-else) 然后通过something/element name引用something库中的元素 谢谢。看看: 包含嵌入式解释的简单库: (ns com.my-company.clojure.examples.my-utils (:import java.util.Dat
require
或use
加载clojure库时,有没有办法重命名它们
例如,有什么方法可以做类似的事情吗
(require 'some.include.path.some-library :as something-else)
然后通过something/element name
引用something库
中的元素
谢谢。看看:
包含嵌入式解释的简单库:
(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]))
- ns表单命名lib的名称空间并声明其依赖项。根据其名称,该库必须包含在类路径相对路径的Java资源中:com/my_company/clojure/examples/my_utils.clj(注意句号到斜杠和连字符到下划线的转换)
- :import子句声明此库对java.util.Date的使用,并使其可用于使用非限定名称在此库中编写代码
- :use子句仅为其defvar-函数声明对clojure.contrib.def库的依赖关系。defvar-可以在这个库的代码中使用它的非限定名
- :require子句声明对clojure.contrib.shell-out库的依赖关系,并允许使用较短的命名空间别名shell使用其成员
:use
和:require
之间的关键区别在于后者的别名功能吗?use
的文档提到它类似于require
,但也将refere
应用于参数。我很难记住这些区别。是的,但是有没有办法(要求[clojure.contrib:as contrib]),然后引用clojure.contrib中的对象,例如,contrib/def而不是clojure.contrib/def?命名空间不会形成层次结构。您可以执行(需要[clojure.contrib.def:as d])
,然后访问例如defvar
asd/defvar
clojure.contrib
如果没有该名称的名称空间,则除了作为符号外,没有其他意义。所以你想要的是不可能的。