这是一个菜鸟问题,但我刚刚开始使用 Clojure。 请像我五岁一样解释一下。
考虑到:
user=> (require '[babashka.process :refer [shell]])
nil
user=> (def j
(-> (shell {:out :string :err "/dev/null"} "ls")
:out some-func
))
我知道
{:out :string :err "/dev/null"}
是一种选项的映射,用于塑造 shell 命令运行的行为。
然后,在下一行。
:out
,我理解这是一个与stdout对应的关键字。我还知道它可以用来从地图中检索相应的值。
但是我不明白如何使用
:out some-func
来调用函数some-func
。
宏
->
将行(shell ...)
的结果放在哪里? 我想是在:out
之后。 因此,将从 :out
行的结果图中提取 (shell...)
值,但如何将其用作 some-func
的参数?
它甚至不在括号内。 为什么不呢?
所谓的“线程优先”
->
宏做了两件事:
(...)
(-> (a) (b) (c) ...)
变成 (... (c (b (a))))
所以就你而言,结果是
(some-func (:out (shell ...)))
。