2015-12-10 75 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

>针对集合中的连续项目,运行提供的过程(通过减少),以达到 侧的效果。返回零 –

相关问题