clojure无法通过map to list应用函数

kak*_*k11 1 clojure

我似乎很难理解我应该如何使用clojure map.我有一个对象列表in-grids,我不想使用方法getCoordinateSystem.我想列表中的对象是一些Java类是很重要的.当我在clojure中直接定义函数然后map工作.

这有效:

(.getCoordinateSystem (first in-grids))

但不是这个

(map .getCoordinateSystem in-grids)

错误是: java.lang.RuntimeException: Unable to resolve symbol: .getCoordinateSystem in this context

我可能错过了一些非常明显的东西,但具体到底是什么?

Lee*_*Lee 5

如果您有表单的表达式

(map f sequence)
Run Code Online (Sandbox Code Playgroud)

然后f应该引用一个实例,IFn然后为其中的每个元素调用sequence.

.是一种特殊形式,.getCoordinateSystem并不是指IFn实例.

(.getCoordinateSystem (first in-grids))
Run Code Online (Sandbox Code Playgroud)

相当于

(. (first in-grids) (getCoordinateSystem))
Run Code Online (Sandbox Code Playgroud)

您可以直接构造函数值,例如

(map #(.getCoordinateSystem %) in-grids)
Run Code Online (Sandbox Code Playgroud)