有没有在 clojure 中构造 lambda 函数的方法?

is there anyway to construct a lambda function in clojure?

我在这里问过:但我想知道是否有其他方法可以在 clojure 中构造 lambda。

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


我可能是错的,但在rethinkdb 驱动程序中,lambda 以某种方式被编译成ast 语法,然后转换为js 并发送到数据库。我相信我需要以某种方式显式创建一个 lambda。 http://www.rethinkdb.com/blog/lambda-functions/ 所以这个问题 How to implement lambda as a function called "lambda" in Clojure? 只展示了如何使用函数,而不是 lambda。

Lambda 只是一种语法糖,就像 clojure 宏一样。您不能在 java 中使用宏,也不能在 clojure 中使用 java 的 "lambda syntax"。但是您可以在 clojure 中创建 java lambda 语法创建的对象。

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

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

功能界面: https://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html 您如何将 lambda 表达式视为参数: How do I define a method which takes a lambda as a parameter in Java 8?