我想找到一種Clojure慣用的方式來初始化一個Java對象。我有以下代碼:初始化Java對象的Clojure慣用的方式
(let [url-connection
(let [url-conn (java.net.HttpURLConnection.)]
(doto url-conn
(.setDoInput true)
; more initialization on url-conn
)
url-conn)]
; use the url-connection
)
但似乎非常尷尬。
什麼是更好的方式來創建HttpURLConnection
對象並在之後在代碼中使用它之前對其進行初始化?
UPDATE:看來(doto ...)
可以在這裏派上用場:
(let [url-connection
(doto (java.net.HttpURLConnection.)
(.setDoInput true)
; more initialization
))]
; use the url-connection
)
按照doto
文檔,它返回到它是「做」的值。
@Goric:查看我的更新。這可能是答案。 – Ralph 2010-11-30 14:41:46
是的。和`doto`的doc有一個類似的例子:`(doto(new java.util.HashMap)(.put「a」1)(.put「b」2))` – 2010-11-30 14:44:45