3

我正在尝试利用(require [clojure.java.shell :refer [sh]])在 clojure 中执行 rsync 备份。函数 sh 将字符串作为参数,例如:

(sh "ls" "-las" "/home/")

但是,我发现自己的数据作为字符串向量到达 sh(例如 ["ls" "-las" "/home/"]),这当然会失败。这似乎是一个非常容易解决的问题,但我刚刚开始使用 clojure(以及 lisp 和函数式编程),我似乎无法让它工作。如何处理要传递给 sh 的向量?

任何建议将不胜感激。

4

1 回答 1

3

听起来您需要使用apply

(apply sh arg-vector)

apply函数还会在其他 LISP 中弹出,允许您将参数列表传递给给定函数。在 Clojure 中,您不仅限于列表,还包括任何seq-able 对象,包括向量。

于 2012-09-10T01:07:04.960 回答