command line arguments - Ways to avoid Exception in thread "main" clojure.lang.ArityException? -
when user supplies no command line arguments, want hello world print usage information instead of error trace.
":";exec clj -m `basename $0 .clj` ${1+"$@"} ":";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 @ clojure.lang.afn.throwarity(afn.java:439) @ clojure.lang.afn.invoke(afn.java:35) @ clojure.lang.var.invoke(var.java:397) @ clojure.lang.afn.applytohelper(afn.java:159) @ clojure.lang.var.applyto(var.java:518) @ clojure.core$apply.invoke(core.clj:600) @ clojure.main$main_opt.invoke(main.clj:323) @ clojure.lang.fnloaderthunk.invoke(fnloaderthunk.java:36) @ clojure.main$main.doinvoke(main.clj:426) @ clojure.lang.restfn.invoke(restfn.java:422) @ clojure.lang.fnloaderthunk.invoke(fnloaderthunk.java:36) @ clojure.lang.var.invoke(var.java:405) @ clojure.lang.afn.applytohelper(afn.java:165) @ clojure.lang.var.applyto(var.java:518) @ clojure.main.main(main.java:37)
(defn -main [& args] (if-not (first args) (usage) (println "hello" (first args))))
you can improve on fair bit, that's reasonable outline.
Comments
Post a Comment