如何使用带闭包的Java 8编写的方法支持以函数为参数并将函数返回为值的方法?
在Java Lambda
API中,主要类是java.util.function.Function。
您可以以与其他所有引用相同的方式使用对该接口的引用:将其创建为变量,然后将其作为计算结果返回,依此类推。
这是一个非常简单的示例,可能会对您有所帮助:
public class HigherOrder {
public static void main(String[] args) {
Function<Integer, Long> addOne = add(1L);
System.out.println(addOne.apply(1)); //prints 2
Arrays.asList("test", "new")
.parallelStream() // suggestion for execution strategy
.map(camelize) // call for static reference
.forEach(System.out::println);
}
private static Function<Integer, Long> add(long l) {
return (Integer i) -> l + i;
}
private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1);
}
如果需要传递多于1个参数,请看一下compose
方法,但其用法非常棘手。
从我的观点来看,一般而言,Java中的闭包和lambda基本上是语法糖,它们似乎不具有函数式编程的所有功能。
对于定义一个简单的函数, Python 还提供了另外一种方法,即使用本节介绍的 lambda 表达式。 lambda 表达式,又称 匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 lambda 表达式的语法格式如下: name = lambda [list] : 表达式 其中,定义 lambda 表达式,必
匿名函数 在Go中函数也是值,程序中可以声明一个函数类型的变量,将函数作为参数传递。声明函数为值的变量(匿名函数:可赋值个变量,也可直接执行) pro04_1_2_1.go package main import ( "fmt" ) //求矩形的面积 func main() { myfun := func(x int, y int) int { retur
(译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport) Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambda表达式也可以称为匿名函数,具有复杂行为的函数可以采用命名函数对象,当然,何谓复杂
Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的
问题内容: 我来自OOP背景,尝试学习python。我使用的函数使用lambda表达式返回列表中具有最大类型的实例。 该函数正确地返回具有maximum类型的实例。我对以下三件事感到困惑: 该功能如何工作?它正在采取什么论点?我查看了文档,但听不懂。 max函数中关键字的用途是什么?我知道它也用于功能上下文 lambda表达式的含义?如何阅读它们?它们如何工作? 这些都是非常笨拙的概念性问题,但可