Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure,不同Java对象上的相同方法调用_Clojure_Itext_Clojure Java Interop - Fatal编程技术网

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谢谢,修复了此问题