带花括号的流api
我有一个问题,找到答案应该很容易,但我找不到它。我是Java新手,主要使用C#。带花括号的流api
假设我们有下面的代码:
List<Double> mean = new ArrayList<>(Collections.nCopies(dim, .0));
//some stuff
mean = mean.stream().map(num->num/=dim).collect(Collectors.toList());
It'a所有凉爽。现在让我们说我想做很多操作,不仅仅是lamba函数内部的一个分歧。然后,我想这一定是使用大括号,我见过一些例子,但是当我将其更改为:
List<Double> mean = new ArrayList<>(Collections.nCopies(dim, .0));
//some stuff
mean = mean.stream().map(num-> {num/=dim; /* other stuff */}).collect(Collectors.toList());
它给了我一个错误,这个方法是不是能够为参数(([no_type]num)->{})
。我试过使用显式演员,但它保持不变。我确信我可以在C#中做这样的事情。
谢谢!
如果你想要做一个拉姆达内多次操作,你将不得不将其与return
语句来得到最终的输出写成
num-> {
return num/=dim;
}
。如果你用大括号写这样的lambda表达式,就像实现一个函数一样:你需要一个return
语句,但是你可以在lambda表达式中使用尽可能多的代码。
哦,没错,那肯定是件容易的事。非常感谢! –
请注意,使用'/ ='在这里完全没有必要和困惑。只需使用'num/dim'。 –
请注意,如果在有效的上下文中有类似于'num-> num/dim'的lambda,则每个IDE都应该提供一个选项来转换为'num - > {return num/dim; '为你。例如。在Netbeans中,该选项标记为“*将块用作lambda的主体*”。 – Holger
什么是实际错误? –
类型流中的方法映射(函数)不适用于参数(( num) - > {})。 –
见路易斯的答案。如果你使用{}并返回一个值,你必须说'return expression;' –