假设我有下面的Scala代码片段
case class A(a: Option[String], b: Option[String])
val v: A = A(None, None)
val vOp: Option[A] = v match {
case A(None, None) => None // can I make this simpler / more generalized
...
}
当A
的示例包含所有None
值而不显式键入每个值时,有没有一种方法可以进行模式匹配?
例如,我正在寻找沿着case A(None :_*) => None
的东西,但我知道这在语法上是无效的。
Context我的用例是,我正在对一个case类进行模式匹配,该case类具有许多频繁更改的底层字段,因此我希望尽可能避免枚举所有潜在的None
值。
1条答案
按热度按时间siv3szwd1#
你可以这样做:
然后你可以这样写:
但我得说我觉得这不是个好主意。你说你需要这个,因为有很多字段,而且它们经常变化。但是“基本情况”,当一切都是
None
时,是你的问题中最小的。当某些字段 notNone
时,你会怎么做?如果你不知道有什么字段,甚至不知道有多少字段,你的match
语句可能有什么有用的逻辑呢?