我有一个企业多语言代码库,它是由java和scala组成的。
我们有很多地方在上面做Map功能 Option[T]
Map函数是返回null的遗留代码。 Option(2).map(x => null)
退货 Some(null)
. 当对结果应用另一个高阶函数时,它抛出nullpointerexception。
作为一种解决方法 Option[T](t).map(x => Option(mapping(x)))
为了得到这个结果 None
. 它正在慢慢变成代码气味。
我想看看是否有更好的方法来实现这一点,或者是否有scala编译器选项返回 None
当这样的电话 Option[T](t).map(x => null)
是自动制造的。
1条答案
按热度按时间abithluo1#
就我个人而言,我不认为你的解决方法有什么错,因为你必须使用返回null的遗留api,但你必须像这样平面Map它
您可以投资scala Package 层,它在幕后处理空值和异常,这样就不必直接调用javaapi
执行
legacyJavaFunc
在运行时发生,因此编译器无法在编译时提前预测结果以自动重写。