请参与2024年Clojure调查,分享您的想法!2024 State of Clojure Survey!

欢迎!请参阅关于页面,了解更多关于这项工作如何运作的信息。

+1
Clojure

自从我从Clojure 1.12 RC开始使用clojure.java.process以来,我一直觉得这个功能直接内置到clojure中真是太好了。

我经常发现自己需要一个完全交互的过程,它会在退出时阻塞。例如

(require '[clojure.java.process :as p])
(let [p (p/start
            {:in  :inherit
             :out :inherit
             :err :inherit}
            "bash")]
    @(p/exit-ref p))

将您的repl变成bash shell是一个极端(但通常很有用)的例子。更常见的情况是,你可能只想调用一个有yes或no提示的脚本。在开发和repl使用过程中,这也有助于便利地处理一些意外的用户输入提示,你现在可以直接在repl中回答。

为clojure.java.process命名空间添加一些支持这种方法的手段是否值得考虑?

相关内容

当然,我可以很容易地使用自己的辅助函数,或者简单地使用babashka.process。但我认为,如果以出厂设置提供这种便利性的支持,可能会带来很多“物有所值”的效果。

相反的观点是,这可能是可以添加到该命名空间中的众多事物之一。人们的方式有很多,显然clojure.java.process不应该试图最大化对每一种可能的交互都提供便利性。

这似乎是一段相当直接的代码 - 你可以在你的user.clj文件中添加一个辅助函数 - 所以我不清楚你真正想要作为对Clojure核心本身所做的更改是什么?

1 条回答

0

选择
 
最佳回答

可能在某个时刻有用,但我很高兴在此处征集兴趣,看看这种模式是否足够普遍,值得添加。

...