Pass Expression as arguments to Clojure REPL
我一直在学习Clojure,最近我一直在使用REPL作为一个命令行计算器,如果可以将参数传递给Clojure REPL并获得输出,我的"工作流程"将会大大改善,有没有人知道怎么做?
澄清:例如我想执行lein"(+ 2 2)"并让它返回4
1 2 | ~ lein"(+ 2 2)" '(+ 2 2)' is not a task. See 'lein help'. |
除了启动REPL之外,
grenchman创建一个repl,每个命令行调用从该repl获得一个结果,这可能是你想要的。
1 2 3 4 5 | # as bash variable { echo"$clj-expressions"; cat - ; } | lein repl # as file { cat ./script.clj; cat - ; } | lein repl |
幸运的是,
这里的想法是将命令发送到repl的stdin,但确保之后连接当前终端的stdin。
感谢Jonathan Leffler的这一次。他的回答解决了这个问题。
要收集输出,您可以随时吐出一些内容作为您运行的脚本的一部分。
这正是REPL的工作原理 - 你写了一些表达式并按下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | → lein repl nREPL server started on port 59650 on host 127.0.0.1 REPL-y 0.3.0 Clojure 1.5.1 Docs: (doc function-name-here) (find-doc"part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here) Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *e user=> (+ 42 42) 84 user=> |
你在
1 2 3 4 5 6 7 | => (def ten 10) ... => (defn fact [n] (apply * (range 1 (inc n)))) ... => (fact ten) 3628800 => |