gpt4 book ai didi

scala - 用于从两个选项中获取一个选项并在两个选项可用时抛出异常的惯用 scala

转载 作者:行者123 更新时间:2023-12-02 05:24:36 25 4
gpt4 key购买 nike

val one: Option[Int] = None    
val two = Some(2)

Option(one.getOrElse(two.getOrElse(null))) // Gives me Some(2) which I want

val one = Some(1)
val two = None

Option(one.getOrElse(two.getOrElse(null))) // Gives me Some(1) which I want

val one: Option[Int] = None
val two: Option[Int] = None

Option(one.getOrElse(two.getOrElse(null))) // Gives me None which I want

val one = Some(1)
val two = Some(2)

Option(one.getOrElse(two.getOrElse(null))) // Gives me Some(1) when I want an exception

我简要地研究了Either 类型,但它似乎是为了“表示两种可能类型之一的值”。我是否缺少一些数据结构或 Monad?本质上,我想要一个明确的(如果两者都有值(value),则抛出错误)获取其中一个,如果它可用或获取 None

最佳答案

我不知道有任何预先构建来做到这一点,所以这里有一个函数:

def xor[T](x: Option[T], y: Option[T]): Option[T] = (x, y) match {
case (Some(_), None) => x
case (None, Some(_)) => y
case (None, None) => None
case _ => throw new Exception()
}

关于scala - 用于从两个选项中获取一个选项并在两个选项可用时抛出异常的惯用 scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26065300/

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