gpt4 book ai didi

scala - 尝试/带有 null 的选项

转载 作者:行者123 更新时间:2023-12-04 00:21:40 27 4
gpt4 key购买 nike

我正在寻找在 scala 中调用函数并获得 Option 的可能性如果在调用方法时引发异常或方法返回 null,则结果为“无”。否则,选项应该具有结果的值。

我知道Try可以用于第一部分,但我不知道如何处理第二部分:

val result = Try(myFunction).toOption()

如果该方法现在返回 null(因为它不是 scala 函数而是 Java 函数), resultSome(null)而不是 None .

最佳答案

据我所知,scala 标准库中只有一种方法可以转换 nullNone - Option.apply(x) ,所以你必须手动使用它:

val result = Try(myFunction).toOption.flatMap{Option(_)}
// or
val result = Try(Option(myFunction)).toOption.flatten

您可以像这样创建自己的辅助方法:
implicit class NotNullOption[T](val t: Try[T]) extends AnyVal {
def toNotNullOption = t.toOption.flatMap{Option(_)}
}

scala> Try(null: String).toNotNullOption
res0: Option[String] = None

scala> Try("a").toNotNullOption
res1: Option[String] = Some(a)

关于scala - 尝试/带有 null 的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21232140/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com