Clojure,不同Java对象上的相同方法调用
在这个代码中,Clojure,不同Java对象上的相同方法调用,clojure,itext,clojure-java-interop,Clojure,Itext,Clojure Java Interop,在这个代码中,headerTable和rowsTable是Java对象。在这里,对它们调用具有相同参数的相同方法: (.setHorizontalAlignment headerTable Element/ALIGN_LEFT) (.setHorizontalAlignment rowsTable Element/ALIGN_LEFT) 有更好的方法吗?我想一定有办法把这两个电话合二为一。但既然这是“副作用”代码,也许不是 我在想一个答案,而不是写一个自定义函数或宏,比如“只使用juxt或
headerTable
和rowsTable
是Java对象。在这里,对它们调用具有相同参数的相同方法:
(.setHorizontalAlignment headerTable Element/ALIGN_LEFT)
(.setHorizontalAlignment rowsTable Element/ALIGN_LEFT)
有更好的方法吗?我想一定有办法把这两个电话合二为一。但既然这是“副作用”代码,也许不是
我在想一个答案,而不是写一个自定义函数或宏,比如“只使用juxt
或comp
”,但也许我的说明太多了
Edit类型暗示是由Leonid Beschastny提到的,因此,为了以防万一,下面是Java方法签名:
public void setHorizontalAlignment(int horizontalAlignment)
类是iText中的
PdfPTable
。(此代码用于创建PDF文件)。有许多可能的重构,其中一种可能是
(run! #(.setHorizontalAlignment ^PdfPTable % Element/ALIGN_LEFT)
[headerTable rowsTable])
>为了产生副作用,对集合中的连续项运行提供的过程(通过reduce)。返回nil,但没有正确的类型提示。此解决方案将强制Clojure使用反射。@LeonidBeschastny谢谢,修复了此问题