Scala选项[枚举]匹配未按预期工作

时间:2016-08-30 00:19:20

标签: scala enums

我有一个遗留Scala应用程序,我们使用Enums(所以我真的没有选择更改为案例类)。我遇到以下功能问题:

def mapFamily(assetMetadata: AssetMetadata): String = {
  assetMetadata.family match {
    case None => throw InvalidAssetFamilyException("Family is required")
    case Some(EnumFamily.Inside) => "1"
    case Some(EnumFamily.Outside) => "2"
    case unknown => throw InvalidFamilyException(s"Unknown Family: $unknown.")
  }

assetMetadat.familyOption[EnumFamily.Family]

枚举如下所示:

object EnumFamily extends Enumeration {
  type Family = Value
  val Inside = Value("Inside")
  val Outside = Value("Outside")
}

当我尝试调用mapFamily时,我总是得到一条未知/异常情况,并带有如下消息:

Unknown Family: Some(Inside)

为什么不能正确匹配?

1 个答案:

答案 0 :(得分:1)

原来这个问题完全无效。我的问题是由于反序列化。我们正在使用的json4s的版本(是的,它的遗留。永远不会使用json4s)实际上将它反序列化为具有类似属性的错误枚举(并且以某种方式反射性地击败所有类型检查)。

我会留下这个问题,但是如果你到了这里,你使用的是序列化器吗?使用您的调试器,看看您是否找回了您期望的类型。