lambda 表达式中变量名称的约定是什么?[已关闭]
我看到很多例子,例如
int sum = widgets.stream()
.filter(w -> w.getColor() == RED)
.mapToInt(w -> w.getWeight())
.sum();
我们可以在这些lambda表达式中使用任何变量Name吗?
我认为变量名称有约定,为了便于阅读,最好使用适当的名称。
例如,如果我在java8之前使用w作为Widget,代码将被回避,因为不可读。随着java 8的出现,发生了什么变化?
for(Widget w : widgets)
{
if(w.getColor() == RED) {
sum += w.getWeight();
}
}
为什么代码不能这样写:
int sum = widgets.stream()
.filter(widget -> widget.getColor() == RED)
.mapToInt(widget -> widget.getWeight())
.sum();
也许上面的代码正在做一些直截了当的事情,并且只在小部件列表中的小部件上。所以,还有更多的东西:
哪个更具可读性:
return requestHolder.getRequests()
.stream()
.map(request -> request.getErrorHolder())
.flatMap(errorData -> errorData.getErrors().stream())
.collect(toList());
或
return requestHolder.getRequests()
.stream()
.map(t -> t.getErrorHolder())
.flatMap(r -> r.getErrors().stream())
.collect(toList());
也许我错过了一些东西。你能解释一下吗?