Clojure,在不同的 Java 对象上调用相同的方法
Clojure, same method call on different Java Objects
在此代码中 headerTable
和 rowsTable
是 Java 对象。这里正在对它们调用具有相同参数的相同方法:
(.setHorizontalAlignment headerTable Element/ALIGN_LEFT)
(.setHorizontalAlignment rowsTable Element/ALIGN_LEFT)
有更好的方法吗?我认为必须有一种方法可以以某种方式将两个调用合并为一个。但由于这是 'side effecting' 代码,也许不是??
我正在考虑不编写自定义函数或宏的答案,例如 "just use juxt
or comp
",但也许我有点太规范了...
编辑 Leonid Beschastny 提到了类型提示,所以为了以防万一它有帮助,这里是 Java 方法签名:
public void setHorizontalAlignment(int horizontalAlignment)
而 class 是 PdfPTable
,来自 iText。 (此代码用于创建 PDF 文件)。
有很多种可能的重构,一种是
(run! #(.setHorizontalAlignment ^PdfPTable % Element/ALIGN_LEFT)
[headerTable rowsTable])
在此代码中 headerTable
和 rowsTable
是 Java 对象。这里正在对它们调用具有相同参数的相同方法:
(.setHorizontalAlignment headerTable Element/ALIGN_LEFT)
(.setHorizontalAlignment rowsTable Element/ALIGN_LEFT)
有更好的方法吗?我认为必须有一种方法可以以某种方式将两个调用合并为一个。但由于这是 'side effecting' 代码,也许不是??
我正在考虑不编写自定义函数或宏的答案,例如 "just use juxt
or comp
",但也许我有点太规范了...
编辑 Leonid Beschastny 提到了类型提示,所以为了以防万一它有帮助,这里是 Java 方法签名:
public void setHorizontalAlignment(int horizontalAlignment)
而 class 是 PdfPTable
,来自 iText。 (此代码用于创建 PDF 文件)。
有很多种可能的重构,一种是
(run! #(.setHorizontalAlignment ^PdfPTable % Element/ALIGN_LEFT)
[headerTable rowsTable])