在java中,如果不使用这两种语言,我如何做到这一点?
我有一个返回字符串的函数在java中,如果不使用这两种语言,我如何做到这一点?,java,functional-programming,refactoring,either,Java,Functional Programming,Refactoring,Either,我有一个返回字符串的函数 私有字符串processQuery(字符串[]args){ //代码逻辑 } 返回的结果可以是回答(您的帐户详细信息为$account_detail.)或回答(对不起,我听不懂您的意思?)。根据结果,代码将执行不同的操作。 我想到的是使用或者 private或processQuery(字符串[]args){ //代码逻辑 } 私有无效回复(字符串[]args){ //代码逻辑 var或=processQuery(args); 返回任意一个。折叠((l){ //返回的结
私有字符串processQuery(字符串[]args){
//代码逻辑
}
返回的结果可以是回答(您的帐户详细信息为$account_detail.)
或回答(对不起,我听不懂您的意思?
)。根据结果,代码将执行不同的操作。
我想到的是使用或者
private或processQuery(字符串[]args){
//代码逻辑
}
私有无效回复(字符串[]args){
//代码逻辑
var或=processQuery(args);
返回任意一个。折叠((l){
//返回的结果是答案
},(r){
//返回的结果是响应
});
}
若它返回左边,那个么它就是答案,若它返回右边,那个么它就是响应。但由于java中没有这两种类型,所以我尝试传递AtomicBoolean
只有使用java stl才能更好地解决此问题。您可以使用Pair
:
Pair-Pair=Pair.with(“Blah”、“Blee”)代码>
看一些例子
如果您的响应
实际上表示某种错误,则更好的方法是抛出某种异常,并保留字符串的返回值
以表示“良好”流程。一种解决方案是让该方法使用两个lambda函数,分别对应于正确答案和错误答案,然后只调用相应的函数
private void processQuery(String[] args, Consumer<String> correct, Consumer<String> incorrect){
if (args.length == 0) {
incorrect.accept("Sorry I cannot understand you?");
return;
}
correct.accept("Your account detail is $account_detail.");
}
或者为不同的函数创建变量
Consumer<String> badAnswer = reply -> System.out.println("Fail, " + reply);
Consumer<String> goodAnswer = reply -> System.out.println("Success!, " + reply);
private void reply(String[] args){
processQuery(args, goodAnswer, badAnswer);
}
Consumer badAnswer=reply->System.out.println(“失败,”+reply);
消费者goodAnswer=reply->System.out.println(“成功!,”+reply);
私有无效回复(字符串[]args){
processQuery(args、goodAnswer、badAnswer);
}
这不是只有JavaFX吗?
Consumer<String> badAnswer = reply -> System.out.println("Fail, " + reply);
Consumer<String> goodAnswer = reply -> System.out.println("Success!, " + reply);
private void reply(String[] args){
processQuery(args, goodAnswer, badAnswer);
}