Joã*_*ria 0 java if-statement java-8
我有一种计算器:
sum = value1 + value2;
multiplication = value1 * value2;
division = (value1 / value2);
average = (sum / 2);
if (operation.compareToIgnoreCase("add") == 0)
result = sum;
else if (operation.compareToIgnoreCase("mult") == 0)
result = multiplication;
else if (operation.compareToIgnoreCase("div") == 0)
result = division;
else if (operation.compareToIgnoreCase("avg") == 0)
result = average;
Run Code Online (Sandbox Code Playgroud)
我必须将其转换为lambda表达式:
result = (request.getValue1(), request.getValue2()) -> {
if (request.getOperation().compareToIgnoreCase("add") == 0) return request.getValue1() + request.getValue2();
else if (request.getOperation().compareToIgnoreCase("mult") == 0) return request.getValue1() * request.getValue2();
else if (request.getOperation().compareToIgnoreCase("div") == 0) return request.getValue1() / request.getValue2();
else if (request.getOperation().compareToIgnoreCase("avg") == 0) return (request.getValue1() + request.getValue2())/2;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.你们能帮忙吗?谢谢
例如:
BiFunction<Number,Number,Number> sum = (value1, value2) -> value1 + value2;
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它:
sum.apply(value1,value2)
Run Code Online (Sandbox Code Playgroud)
这里有更多例子.
您还可以将您的一组存储BiFunction在Map:
Map<String,BiFunction<Number, Number, Number>> operations = new HashMap<>();
operations.put("sum", sum);
Run Code Online (Sandbox Code Playgroud)
如果对所有操作执行相同操作,则按以下方式调用它们:
operations.get("sum").apply(value1, value2);
Run Code Online (Sandbox Code Playgroud)
因此,结果可以按如下方式计算:
result = (value1, value2, operation) -> operations.get(operation).apply(value1, value2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |