Clojure,相同的方法调用不同的Java对象

时间:2015-12-10 16:48:27

标签: clojure itext clojure-java-interop

在此代码中,headerTablerowsTable是Java对象。在这里调用相同参数的相同方法:

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

有更好的方法吗?我认为必须有办法将两个调用合二为一。但由于这是“副作用”代码,也许不是?

我正在考虑一个没有编写自定义函数或宏的答案,比如“只使用juxtcomp”,但是我可能会有点过于规范......

编辑 Leonid Beschastny提到了类型提示,所以万一它有帮助,这里是Java方法签名:

public void setHorizontalAlignment(int horizontalAlignment)  

该课程为PdfPTable,来自iText。 (此代码用于创建PDF文件)。

1 个答案:

答案 0 :(得分:3)

有许多可能的重构,一个是

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