本文介绍了Scala选项映射到另一个选项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
从选项映射时,有没有一种方法可以避免将可能为空的结果包装在另一个选项内.
Is there a way to avoid having to wrap a potentially null result inside another option when mapping from an option.
option.flatMap(arg => Option(arg.somePotentiallyNullValue))例如类似
option.optionMap(arg => arg.somePotentiallyNullValue )我的代码库中只有很多Java代码,这意味着将地图结果永久包装在其他Option调用中.
I just have a lot of Java code in our codebase that means forever wrapping the results of maps in further Option calls.
推荐答案从可为空的类型到Option的隐式转换又如何呢?在范围内的某个地方声明这一点:
What about implicit conversion from nullable type to Option? Declare this somewhere in scope:
implicit def toOption[T](x: T) : Option[T] = Option(x)稍后编译器会解决这个问题:
Later the compiler will figure it out:
option.flatMap(_.somePotentiallyNullValue)由于flatMap期望Option[T]作为结果值,因此编译器使用toOption隐式转换,如下所示:
Since flatMap expects Option[T] as a result value, compiler uses toOption implicit conversion like this:
option.flatMap(arg => toOption(arg.somePotentiallyNullValue))更多推荐
Scala选项映射到另一个选项
发布评论