Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带花括号的流api_Java_Api_Lambda_Java Stream - Fatal编程技术网

Java 带花括号的流api

Java 带花括号的流api,java,api,lambda,java-stream,Java,Api,Lambda,Java Stream,我有一个问题,找到答案应该很容易,但我找不到。我是Java新手,我主要使用C 假设我们有以下代码: List<Double> mean = new ArrayList<>(Collections.nCopies(dim, .0)); //some stuff mean = mean.stream().map(num->num/=dim).collect(Collectors.toList()); List mean=newarraylist(Collections

我有一个问题,找到答案应该很容易,但我找不到。我是Java新手,我主要使用C

假设我们有以下代码:

List<Double> mean = new ArrayList<>(Collections.nCopies(dim, .0));
//some stuff
mean = mean.stream().map(num->num/=dim).collect(Collectors.toList());
List mean=newarraylist(Collections.nCopies(dim.0));
//一些东西
mean=mean.stream().map(num->num/=dim.collect(Collectors.toList());
这一切都很酷。现在让我们假设我要做很多运算,而不是在lamba函数中只进行一次除法。然后我想一定是用了花括号,我见过一些例子,但当我把它改成:

List<Double> mean = new ArrayList<>(Collections.nCopies(dim, .0));
//some stuff
mean = mean.stream().map(num-> {num/=dim; /* other stuff */}).collect(Collectors.toList());
List mean=newarraylist(Collections.nCopies(dim.0));
//一些东西
mean=mean.stream().map(num->{num/=dim;/*其他东西*/}).collect(Collectors.toList());
它给了我一个错误,这个方法不能用于参数
([no_type]num)->{}
。我尝试过使用显式强制转换,但它保持不变。我相信我可以在C#中做类似的事情


谢谢

如果要在lambda中执行多个操作,则必须将其编写为

num-> {
  return num/=dim;
}

使用
return
语句获得最终输出。如果像这样用大括号编写lambda,这与实现一个函数完全一样:您需要一个
return
语句,但lambda中可能有任意多的代码。

实际错误是什么?方法映射(函数请参见Louis的答案。如果使用{}然后返回一个值,你必须说
returnexpression;
谢谢你的回答/*其他东西*/:)哦,没错,那一定很简单。谢谢!请注意,在这里使用
/=
是完全不必要的,而且容易混淆。只需使用
num/dim
。请注意,当您在有效上下文中使用类似
num->num/dim
的lambda时,每个IDE都应该提供一个选项来为您执行到
num->{return num/dim;}
的转换。例如,在Netbeans中,选项被标记为“使用块作为lambda的主体”。