一般是用 orElse 、flatMap 来串接不同的处理过程的吧。 if isPresent 这个写法太命令式了。直接 get 的话说实话不如不要用 Optional 。 当然 Optional 确实很难用就是了。
cheng6563
2023-08-27 01:10:18 +08:00
烂设计,没有必要用。
lisongeee
2023-08-27 01:37:13 +08:00
kotlin: val jobName = people?.job?.jobName ?: null js/ts: const jobName = people?.job?.jobName?.[0] ?? null c#: var jobName = people?.job?.jobName?[0] ?? null Swift: let value = obj?.nestedObj?.property dart: var jobName = people?.job?.jobName ?: null
但是肯定有人觉得 Optional 比上面更好用,毕竟祖宗之法不可变
ikas
2023-08-27 09:56:56 +08:00
复制一点实际业务代码
var fileName = file.getName(); var fileInfo = new FileInfo(); SessionContext.userName().ifPresent(fileInfo::setUserName); MediaTypeFactory.getMediaType(fileName).map(MediaType::toString).ifPresent(fileInfo::setContentType);
Bingchunmoli
2023-08-27 11:28:59 +08:00
@lisongeee 有时候??多了有点增加阅读难度,当然也是因为用的不多不够熟悉 kt 。.let 复杂点 ide 提示的自己都看不懂