2015-12-10 112 views
1

在此代碼中,headerTablerowsTable是Java對象。這裏有相同的參數調用相同的方法:Clojure,對不同Java對象的相同方法調用

(.setHorizontalAlignment headerTable Element/ALIGN_LEFT) 
(.setHorizontalAlignment rowsTable Element/ALIGN_LEFT) 

有沒有更好的方式來做到這一點?我會認爲必須有辦法將兩種呼叫以某種方式結合起來。但由於這是「副作用」的代碼,也許不是?

我在想一個答案,而無需編寫自定義函數或宏,像「只是使用juxtcomp」,但隨後也許我是有點過於武斷......

編輯類型提示被列昂尼德Beschastny提到,所以以防萬一有幫助,這裏的Java方法簽名:

public void setHorizontalAlignment(int horizontalAlignment) 

和類是PdfPTable,從iText的。 (此代碼正在用於創建PDF文件)。

回答

3

有許多可能的重構,一個是

(run! #(.setHorizontalAlignment ^PdfPTable % Element/ALIGN_LEFT) 
     [headerTable rowsTable]) 
+0

什麼是'跑!'? – Thumbnail

+0

http://clojure.github.io/clojure/clojure.core-api.html#clojure.core/run! – cfrick

+0

>針對集合中的連續項目,運行提供的過程(通過減少),以達到 側的效果。返回零 –

相關問題