在Java 8中,方法可以创建为Lambda表达式,并且可以通过引用传递(通过一些工作).有大量的在线示例,lambdas被创建并与方法一起使用,但没有关于如何使用lambda作为参数的方法的示例.那是什么语法?
MyClass.method((a, b) -> a+b);
class MyClass{
//How do I define this method?
static int method(Lambda l){
return l(5, 10);
}
}
Run Code Online (Sandbox Code Playgroud) 我希望能够在Clojure中使用常见的Lisp语法定义lambdas.例如:
(lambda (myarg)
(some-functions-that-refer-to myarg))
Run Code Online (Sandbox Code Playgroud)
这需要与以下相同:
#(some-functions-that-refer-to %)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我知道我将永远只有一个arg,所以也许这简化了事情.(但它可以被称为任何东西 - "myarg"或其他什么.)
我怀疑一个可行的解决方案是"(defmacro lambda ......".如果是这样,我不确定最好的方法.如何干净地将arg名称翻译为%?以及如何最终得到正确的功能?
或者,是否有一个比编写我自己的宏更简单的解决方案,实际上重新实现了Clojure的...... lambda?