5
Cuando un usuario no proporciona argumentos de línea de comando, quiero que Hello World imprima información de uso en lugar de un rastro de error.Formas de evitar la excepción en el hilo "principal" clojure.lang.ArityException?
":";exec clj -m `basename $0 .clj` ${1+"[email protected]"}
":";exit
(ns hello
(:gen-class))
(defn -main
[greetee]
(println (str "Hello " greetee "!")))
$ ./hello.clj Fred
Hello Fred!
$ ./hello.clj
Exception in thread "main" clojure.lang.ArityException: Wrong number of args (0) passed to: hello$-main
at clojure.lang.AFn.throwArity(AFn.java:439)
at clojure.lang.AFn.invoke(AFn.java:35)
at clojure.lang.Var.invoke(Var.java:397)
at clojure.lang.AFn.applyToHelper(AFn.java:159)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.core$apply.invoke(core.clj:600)
at clojure.main$main_opt.invoke(main.clj:323)
at clojure.lang.FnLoaderThunk.invoke(FnLoaderThunk.java:36)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:422)
at clojure.lang.FnLoaderThunk.invoke(FnLoaderThunk.java:36)
at clojure.lang.Var.invoke(Var.java:405)
at clojure.lang.AFn.applyToHelper(AFn.java:165)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
Gracias hombre! Estás demostrando ser un recurso valioso en Clojure. – mcandre
Es posible que también desee consultar https://github.com/amalloy/clojopts, mi biblioteca de análisis de opciones. Todavía no contiene mensajes de uso, pero está en la lista de deseos y puede contribuir si lo desea. – amalloy