shell 调用执行某个命令后的 :out 是什么?

问题描述 投票:0回答:1

这是一个菜鸟问题,但我刚刚开始使用 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
的参数?

它甚至不在括号内。 为什么不呢?

clojure babashka
1个回答
0
投票

所谓的“线程优先”

->
宏做了两件事:

  1. 它确保传递给它的每个表单都包含在
    (...)
  2. 它将表单链接起来,使
    (-> (a) (b) (c) ...)
    变成
    (... (c (b (a))))

所以就你而言,结果是

(some-func (:out (shell ...)))

© www.soinside.com 2019 - 2024. All rights reserved.