a';构建';功能是否可以在clojure中实现?
就这一问题采取后续行动: 我知道我可以编写一个宏,只在类名的末尾添加一个a';构建';功能是否可以在clojure中实现?,clojure,Clojure,就这一问题采取后续行动: 我知道我可以编写一个宏,只在类名的末尾添加一个,但我希望有一个函数可以做到这一点: (defn construct [cl & args] ....... ) (construct "java.util.Date" 0) ;=> #inst "1970-01-01T00:00:00.000-00:00" (construct "java.util.Date" 2013 4 27) ;=> #inst "2013-04-26T14:00:
,但我希望有一个函数可以做到这一点:
(defn construct [cl & args]
....... )
(construct "java.util.Date" 0)
;=> #inst "1970-01-01T00:00:00.000-00:00"
(construct "java.util.Date" 2013 4 27)
;=> #inst "2013-04-26T14:00:00.000-00:00"
(construct "java.util.Date" "27 Apr 2013")
;=> #inst "2013-04-26T14:00:00.000-00:00"
函数如何检查基元类型?宏如何
new
示例:
(new java.util.Date 0)
=> #inst "1970-01-01T00:00:00.000-00:00"
(new java.util.Date "27 Apr 2013")
=> #inst "2013-04-26T22:00:00.000-00:00"
在函数体中添加条件逻辑。标准Clojure的重载和键入方式与Java不同。没错,尽管可以使用defnSo的多体形式在arity上重载,但Java interop是如何实现的?intro运算符dot(.)是一种特殊的运算符,在编译器中具有特定的支持,但Clojure函数定义不支持类型重载。为此,您可以使用多方法或协议。也许类似的解决方案就足够了:您只是将new别名为construct。在任何可以使用该构造的地方,都可以使用new just add well。new宏的源文件在哪里?