作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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
等地方神奇地下载它们。但我刚刚意识到我不理解这里的斜杠语法,并且希望得到澄清,特别是如果用法与斜杠与命名空间的用法完全正交,或者是否有更微妙的事情发生。
最佳答案
clojure 代码中的斜杠用于将命名空间与命名空间中的函数名称分隔开。 project.clj 中的斜杠是 maven 使用的项目名称(按照约定组织/产品)的一部分。
A/是符号的有效元素 - 例如在 repl 中尝试 'this/is/not/a/namespace
- 它返回一个带有一堆斜杠的符号。整个 (defproject ...)
形式位于隐式语法引号 (`) 内,这意味着您可以拥有任意名称,并且它们会被视为符号(您也可以使用 ~ 取消引号并插入任意名称)将代码写入project.clj,但这通常是代码味道)。
关于clojure - 解释一下project.clj中的clojure依赖斜杠语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18385162/
我是一名优秀的程序员,十分优秀!