我有一个问题,找到答案应该很容易,但我找不到它。我是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#中做这样的事情。
谢谢!
答案 0 :(得分:2)
如果要在lambda中执行多个操作,则必须将其写为
num-> {
return num/=dim;
}
使用return
语句获取最终输出。如果你用大括号写这样的lambdas,它就像实现一个函数:你需要一个return
语句,但你可以在lambda中拥有尽可能多的代码。