带有大括号的流api

时间:2016-03-02 20:19:49

标签: 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());

一切都很酷。现在让我们说我想做很多操作,不仅仅是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#中做这样的事情。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

num-> {
  return num/=dim;
}

使用return语句获取最终输出。如果你用大括号写这样的lambdas,它就像实现一个函数:你需要一个return语句,但你可以在lambda中拥有尽可能多的代码。