在Clojure名称空间中,我使用斜杠将名称空间或名称空间别名与名称空间中符号分开,如下所示
(ns whatever (:require [clojure.math.combinatorics]))
(clojure.math.combinatorics/subsets [42 43 44])但是,我刚刚意识到,查看project.clj时,斜杠在依赖项部分似乎意味着完全不同的东西,如
(defproject whatever "1.0.0"
:description (str "yeah sure yubetcha")
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]
[org.clojure/math.combinatorics "0.0.3"]])我通常不会遇到依赖关系的问题:我只是无意地从文档中抓取它们,然后它们被Leiningen神奇地从clojars.org或类似的地方下载下来。但我刚刚意识到,我不理解这里的斜杠语法,如果这种用法与带有名称空间的斜杠的用法完全正交,或者是否发生了更微妙的事情,我将非常感激。
发布于 2013-08-22 23:47:57
clojure代码中的斜杠用于分隔名称空间和名称空间中的函数名。project.clj中的斜杠是maven使用的项目名称(按照约定、组织/产品)的一部分。
A/是一个符号的有效元素-例如,尝试在repl中使用'this/is/not/a/namespace -它返回一个符号,其中包含一堆组成斜杠。整个(defproject ...)表单都包含在一个隐式的语法引号(`)中,这意味着您可以使用任意的名称,它们会被视为符号(您也可以使用~来取消引号,并在project.clj中插入任意代码,但这通常是一种代码味道)。
https://stackoverflow.com/questions/18385162
复制相似问题