gpt4 book ai didi

Scala: block 中的 "getOrElse"

转载 作者:行者123 更新时间:2023-12-02 06:35:22 30 4
gpt4 key购买 nike

我是 Scala 的新手,每个人都说当 myFoo 包含在 Option 中时,使用类似 if myFoo.get is null then 的东西是不好的 (例如 Option[myFoo])在 Scala 中

我不断遇到 getOrElse 但所有提到 getOrElse 的答案都让我更加困惑,尽管它听起来很简单(“getOrElse”)。


这就是我想要做的。如果 myFoo 为 null,则执行 something,但如果不是,则执行 somethingElse

有人可以用最简单的方式为我解释一下吗?不需要很长的答案,但我会很感激我能得到的所有帮助。

最佳答案

看起来你没有Option,但是一些值可能是null:

If myFoo is null

在这种情况下,您必须使用 Option 包装它:Option(myFoo)

val result = Option(myFoo) match {
case Some(value) =>
// something
// you could use `value` here
case None =>
// something else
}

Option(myFoo)Option 包装 myFoo:如果它是 null 你会得到 否则你会得到Some(myFoo)

请参阅本文:scala.Option Cheat Sheet用于使用 Option 的方法。

另请查看 this answer .

请注意,如果 myFoo 是一个 Option,那么您不需要包装它:将 Option(myFoo) match 替换为 myFoo 匹配

您还应该注意,get 在空的 Option 上(在 None 上)抛出异常而不是返回 null:

if myFoo.get is null then

您将得到一个异常,而不是 null。永远不要使用 get

关于Scala: block 中的 "getOrElse",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20710186/

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