无论如何在clojure中构造一个lambda函数?

zca*_*ate 1 clojure rethinkdb

我在这里问:https://stackoverflow.com/questions/36385548/how-to-programmatically-construct-a-lambda-in-java-8但我想知道是否有替代方法可以在clojure中构建lambdas.

对于用例,我试图包装rethinkdb库:http://www.rethinkdb.com/api/java/#map


我可能错了,但是在rethinkdb驱动程序中,不知何故lambdas被编译成ast语法,转换为js并发送到数据库.我相信我需要以某种方式明确地创建一个lambda.http://www.rethinkdb.com/blog/lambda-functions/ 所以这个问题如何在Clojure中将lambda实现为一个名为"lambda"的函数?仅显示如何使用函数,而不是lambda.

lib*_*tor 6

Lambdas只是一种语法糖,就像clojure宏一样.你不能在java中使用宏,或者在clojure中使用java的"lambda语法".但是你可以在clojure中创建java lambda语法创建的对象.

也就是说,在java中,lambda语法创建一个对象,该对象根据方法中的类型实现接口.该接口具有单个非默认和非静态方法.

如果你想在clojure中构造一个"java lambda",你真正需要做的是创建一个实现该接口的对象.

功能接口:https: //docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html 如何将lambdas视为参数: 如何定义将lambda作为参数的方法在Java 8中?