我想根据clojure中的类型获取对象的“默认值”。例如,它可能工作是这样的:在clojure中获取对象类型的“默认值”?
(default-value 15) ;; => 0
(default-value "hi") ;; => ""
在这两种情况下,它需要的值的类型,并返回值的类型的“空白”实例。我能想出的最好的是
(defn default-value [x] (.newInstance (.getClass x)))
但是,这并不对数字工作:
repl=> (.newInstance (.getClass 1))
NoSuchMethodException java.lang.Long.<init>() java.lang.Class.getConstructor0 (Class.java:3082)
数字“默认”值取决于数字的使用方式。例如。 0用于加法,1用于乘法运算。 – ClojureMostly