评论由: mfikes
一个可以考虑的替代方案:模仿ClojureScript中现有的功能,ClojureScript有一个* }
`
cljs.user=> (doc main-cli-fn)
cljs.core/main-cli-fn
当编译为命令行目标时,无论{{main-cli-fn}}被设置为什么函数,都会以命令行
argv作为参数调用它
供应商
`
作为一个示例使用,使用{{foo.cljs}}
`
(defn greet [name]
(println (str "Hello " name "!")))
(set! main-cli-fn greet)
`
然后
$ planck foo.cljs 朋友 你好,朋友!
这种情况下,这种方法相对于 {{-m}} 或 {{-f}} 方法有很大的优势。比如如果你编写一个 shebang 脚本并希望通过命令行参数传递,最好以以下方式启动脚本:
`
!/usr/bin/env clojure
`
然后让 } 机制确保 } 被路由到那个函数,无需在 shebang 行中添加 {{-f some-qualified/function}},因为在 Linux 中在 shebang 行中无法指定解释器参数。