我写了一个小的匿名函数,用于 map
称呼。该函数返回一个向量,其中包含来自 SQL 结果集查询的列名和列值。
这是函数(输入是列名):
(fn [name] [(keyword name) (.getObject resultset name)])
这工作正常,但是当我尝试使用匿名函数的“简化”版本时,出现错误:
#([(keyword %) (.getObject resultset %)])
java.lang.IllegalArgumentException: Wrong number of args (0) passed to: PersistentVector
这是
map
称呼:(into {} (map (fn [name] [(keyword name) (.getObject resultset name)]) column-names))
是否可以为此函数使用简化的语法?如果是这样,如何?
谢谢。
最佳答案
您的问题是简单的语法试图将向量评估为函数调用。
您可以插入一个“身份”函数以使其工作,因为这只是一个简单的函数,它将返回不变的向量:
#(identity [(keyword %) (.getObject resultset %)])
关于Clojure:从匿名函数返回一个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4921566/