Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure重命名加载的库_Clojure - Fatal编程技术网

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
    as
    d/defvar
    clojure.contrib
    如果没有该名称的名称空间,则除了作为符号外,没有其他意义。所以你想要的是不可能的。