【发布时间】:2020-12-18 17:02:58
【问题描述】:
public DetailsResponse common(String customerId, String personId) {
Capabilities capabilities = new Capabilities();
Details details = new Details();
DetailsResponse detailsResponse = new DetailsResponse();
consume("590204", "4252452")
.map(items -> items.get(0))
.flatMap(item -> {
return actions("432432", "1241441")
.map(ev -> {
switch (item.getCriticality()) {
case "HIGH":
case "VERY HIGH":
capabilities.setBan_hash("false");
capabilities.setI("false");
capabilities.setK("false");
details.setCriticality(item.getCriticality());
details.setHostname(item.getNames().get(0).getName());
detailsResponse.setCapabilities(capabilities);
detailsResponse.setDetails(details);
return detailsResponse;
default:
capabilities.setk(ev.get(con.getAlertCapabilitiesAndAssetDetails().getFields().get()));
capabilities.setI(ev.get(con.getAssetDetails().getFields().get()));
capabilities.setl(ev.get(con.getAlertCapabilitiesAndAssetDetails().getFields().get()));
details.setCriticality(item.getCriticality());
details.setHostname(item.getNames().get(0).getName());
detailsResponse.setCapabilities(capabilities);
capabilitiesAndAssetDetailsResponse.setDetails(asset);
detailsResponse.setDeviceid("");
return detailsResponse;
}
});
}).subscribe();
return detailsResponse;
}
这里的问题是如何将 lamda 返回的值在 map 中作为方法返回值返回,因为 lamda 返回的值的范围仍然在 lamda 范围内,而不是在方法范围内。
【问题讨论】:
-
另外,在方法调用消耗后如何使用 switchifempty,这会在将项目值传递给第二步时产生问题
-
对不起,但我不知道你在问什么,因为我猜英语不是你的主要语言,你能否进一步澄清你的问题。
-
@Toerktumlare 没有类似的,希望针对上述相关问题的明确问题是 lamda 在 map 中返回的值不能用于从方法返回,因为 lamda 返回的值仍然在 lamda 范围内。希望澄清问题??
标签: lambda java-8 spring-webflux reactive