gpt4 book ai didi

scala 选项互斥值

转载 作者:行者123 更新时间:2023-12-01 07:51:58 24 4
gpt4 key购买 nike

我有一个

val file: Option = xxxx
val request: Option = yyyyy

这些是相互排斥的,所以自然而然地理解就是我想要的。有没有干净的方法

  1. 如果两者都为 None 则抛出验证异常
  2. 如果两者都是 Some(x) 则抛出验证异常
  3. 处理其中一个

我想也许元组上的匹配可能是最干净的,但想知道是否有一些 map 或 flatMap recoverWith/rescue 技巧看起来可读且简单。

最佳答案

您可以使用模式匹配,但它不能很好地扩展以添加更多选项。

(file, request) match {
case (Some(f), None) => // handle file
case (None, Some(r)) => // handle request
case (None, None) => // error case
case (Some(_), Some(_)) => // error case
}

但是如果你真的可以让“all None”成为唯一的错误案例,而不是在多个 Some 上出错,你可以轻松地将它们按你喜欢的顺序排列,并且只处理最重要的不是 None 的 -

// file is more important, ignore request unless file is None
Seq(file, request).flatten.headOption match {
case Some(x) => // x is either file or request's value
case None => // All None, error
}

关于scala 选项互斥值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431171/

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