是否可以将函数的结果作为输入传递给Clojure中的两个函数?

sda*_*das 2 functional-programming clojure

我有generate-code一个while在Clojure循环中运行的函数:

; ...
(with-local-vars [code nil]
    (while true
        (var-set code (generate-code @code))
        (write-to-file @code)
        (execute-code @code)))
Run Code Online (Sandbox Code Playgroud)

显然这不是Clojure-esque - 有没有更好的方法来做到这一点而不引入局部变量?

A. *_*ebb 6

您可能正在寻找let:

(let [code (generate-code)]
    (write-to-file code)
    (execute-code code))
Run Code Online (Sandbox Code Playgroud)

你也可以

((fn [code] 
    (write-to-file code)
    (execute-code code))
 (generate-code))
Run Code Online (Sandbox Code Playgroud)

或者,如果你想要的话

(last ((juxt write-to-file execute-code) (generate-code)))
Run Code Online (Sandbox Code Playgroud)