- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我总是将 -A 与 clojure 工具一起使用,但有些警告说我应该使用 -M 代替,我找到了 this doc ,但还没有得出何时使用每个工具的结论。
最佳答案
Clojure CLI 仍在不断发展,因此 -X
选项相对较新,并且 -M
选项的含义在同一时间范围内发生了变化。
您可以在此处查看 CLI 版本和简短的发行说明:https://clojure.org/releases/tools
直到 2020 年年中,您都在使用 -A
。 -M
只是运行 :main-opts
—— 它不尊重任何类路径选项或解析选项。
在 1.10.1.697 版本(2020 年 9 月 25 日)中,引入了 -X
选项以允许执行特定的 Clojure 函数,将数据的哈希映射作为单个参数传递。该版本还扩展了 -M
选项的行为,以尊重 :extra-paths
和 :extra-deps
以及运行 :main-opts
- 有效地使 -M
等同于 -A
。
这些选项的工作方式和 CLI 的整体行为发生了相当多的变化,直到大约一个月后 1.10.1.727(2020 年 10 月 21 日)才稳定下来。在此期间,-A
选项运行 :main-opts
的行为实际上已被弃用:如果您现在使用 -A
运行 :main-opts
,您将收到警告,提示您应该改用 -M
。
一些基于 Clojure CLI 和 deps.edn
的社区工具在其 README 中有说明,您需要至少使用 1.10.1.727 版本才能利用它们的功能。版本 1.10.3.814 是当前版本(截至 2021 年 3 月 16 日)。随着 CLI 添加新功能(并且可能很快会进行另一轮更改),保持最新状态是值得的。
所有这些的 TL; DR 是:
-M
来运行 clojure.main
和任何 :main-opts
——这包括 -m
来标识一个命名空间,其 -main
函数应该被执行,还有 -e
来评估一个表达式。请注意,-main
是一个可变参数函数,它使用零个或多个 String
参数调用。 -X
运行特定函数,将单个哈希映射作为其参数,除了 :exec-args
中的 deps.edn
之外,还通过命令行传入键/值对。请注意,-X
接受 EDN 值,这意味着需要在命令行上仔细引用字符串: '"A string"'
-- 双引号用于 EDN 字符串,单引号用于确保值按原样通过 shell 。在 Windows 上,通过 cmd.exe
或 Powershell,引用比这更复杂(在 Linux 和 macOS 上使用 Clojure CLI 要容易得多,因此对于 Windows,值得考虑 WSL2)。 -A
启动 REPL。现在,这意味着你需要小心混合 :main-opts
和你在启动 REPL 时使用的别名(因为 -A
仍然运行 :main-opts
但在某些时候它会停止这样做)。 -P
-- prepare -- 您可以在
clojure
之后(在
-X
、
-M
或
-A
之前)立即添加它,它可以让 CLI 计算和解析来自
deps.edn
文件和提供的别名(和下载 Maven/Clojars JAR 并克隆 git deps),但在函数实际执行之前停止(
-X
的特定函数、
clojure.main
的
-M
或
-A
的 REPL)。
x.y.z.commits
,其中
x.y.z
是 Clojure 的默认版本,如果您不通过别名或项目的
deps.edn
文件覆盖它,您将获得它。
关于clojure - 何时将 -M、-A 或 -X 与 Clojure CLI 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66925857/
问题故障解决记录 -- Java RMI Connection refused to host: x.x.x.x .... 在学习JavaRMI时,我遇到了以下情况 问题原因:可
我正在玩 Rank-N-type 并尝试输入 x x .但我发现这两个函数可以以相同的方式输入,这很不直观。 f :: (forall a b. a -> b) -> c f x = x x g ::
这个问题已经有答案了: How do you compare two version Strings in Java? (31 个回答) 已关闭 8 年前。 有谁知道如何在Java中比较两个版本字符串
这个问题已经有答案了: How do the post increment (i++) and pre increment (++i) operators work in Java? (14 个回答)
下面是带有 -n 和 -r 选项的 netstat 命令的输出,其中目标字段显示压缩地址 (127.1/16)。我想知道 netstat 命令是否有任何方法或选项可以显示整个目标 IP (127.1.
我知道要证明 : (¬ ∀ x, p x) → (∃ x, ¬ p x) 证明是: theorem : (¬ ∀ x, p x) → (∃ x, ¬ p x) := begin intro n
x * x 如何通过将其存储在“auto 变量”中来更改?我认为它应该仍然是相同的,并且我的测试表明类型、大小和值显然都是相同的。 但即使 x * x == (xx = x * x) 也是错误的。什么
假设,我们这样表达: someIQueryable.Where(x => x.SomeBoolProperty) someIQueryable.Where(x => !x.SomeBoolProper
我有一个字符串 1234X5678 我使用这个正则表达式来匹配模式 .X|..X|X. 我得到了 34X 问题是为什么我没有得到 4X 或 X5? 为什么正则表达式选择执行第二种模式? 最佳答案 这里
我的一个 friend 在面试时遇到了这个问题 找到使该函数返回真值的 x 值 function f(x) { return (x++ !== x) && (x++ === x); } 面试官
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Isn't it easier to work with foo when it is represented b
我是 android 的新手,我一直在练习开发一个针对 2.2 版本的应用程序,我需要帮助了解如何将我的应用程序扩展到其他版本,即 1.x、2.3.x、3 .x 和 4.x.x,以及一些针对屏幕分辨率
为什么案例 1 给我们 :error: TypeError: x is undefined on line... //case 1 var x; x.push(x); console.log(x);
代码优先: # CASE 01 def test1(x): x += x print x l = [100] test1(l) print l CASE01 输出: [100, 100
我正在努力温习我的大计算。如果我有将所有项目移至 'i' 2 个空格右侧的函数,我有一个如下所示的公式: (n -1) + (n - 2) + (n - 3) ... (n - n) 第一次迭代我必须
给定 IP 字符串(如 x.x.x.x/x),我如何或将如何计算 IP 的范围最常见的情况可能是 198.162.1.1/24但可以是任何东西,因为法律允许的任何东西。 我要带198.162.1.1/
在我作为初学者努力编写干净的 Javascript 代码时,我最近阅读了 this article当我偶然发现这一段时,关于 JavaScript 中的命名空间: The code at the ve
我正在编写一个脚本,我希望避免污染 DOM 的其余部分,它将是一个用于收集一些基本访问者分析数据的第 3 方脚本。 我通常使用以下内容创建一个伪“命名空间”: var x = x || {}; 我正在
我尝试运行我的test_container_services.py套件,但遇到了以下问题: docker.errors.APIError:500服务器错误:内部服务器错误(“ b'{” message
是否存在这两个 if 语句会产生不同结果的情况? if(x as X != null) { // Do something } if(x is X) { // Do something } 编
我是一名优秀的程序员,十分优秀!