我如何简洁地写一个|| b其中a和b是可选值? [英] How do I concisely write a || b where a and b are Optional values?

查看:83
本文介绍了我如何简洁地写一个|| b其中a和b是可选值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对任何语言的答案感到满意,但我最终希望得到Java中的答案。 (Java 8+很好,不仅限于Java 8.我试图修复这些标签。)



如果我有两个可选<整数> 值,我如何简洁地计算 a ||的等价值。 b ,意思是: a ,如果定义的话;否则 b ,如果定义的话;否则 empty()

 可选< Integer> a = ...; 
可选<整数> b = ...;
可选<整数> aOrB = a || b; //如何在Java 8+中编写它?

我知道我可以写 a.orElse(12),但是如果默认的value也是可选的



显然,在C#中,运算符 ?? 做我想要的。

解决方案

可选<整数> aOrB = a.isPresent()? a:b;


I'm happy with an answer in any language, but I ultimately want an answer in Java. (Java 8+ is fine. Not limited to Java 8. I've tried to fix the tags.)

If I have two Optional<Integer> values, how do I concisely compute the equivalent of a || b, meaning: a, if it's defined; otherwise b, if it's defined; otherwise empty()?

Optional<Integer> a = ...;
Optional<Integer> b = ...;
Optional<Integer> aOrB = a || b; // How to write this in Java 8+?

I know that I can write a.orElse(12), but what if the default "value" is also Optional?

Evidently, in C#, the operator ?? does what I want.

解决方案

Optional<Integer> aOrB =  a.isPresent() ? a : b;

这篇关于我如何简洁地写一个|| b其中a和b是可选值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆