1
我有一个遗留的Scala应用程序,我们使用枚举(所以我没有选择更改为案例类)。我在用下面的函数问题:斯卡拉选项[枚举]匹配没有按预期工作
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.family
是Option[EnumFamily.Family]
枚举如下所示:
object EnumFamily extends Enumeration {
type Family = Value
val Inside = Value("Inside")
val Outside = Value("Outside")
}
当我尝试打电话mapFamily
我总是对未知/异常情况下的消息如下:
Unknown Family: Some(Inside)
为什么它不正确匹配?
我认为问题是'case Some(Family.Inside)=>“1”'因为它应该是'case Some(EnumFamily.Inside)=>“1”' – TheKojuEffect
对不起@TheKojuEffect,就是这样是(我在发布之前重新命名了一些东西,并搞砸了)。我编辑了代码来反映这一点。 – djsumdog
你正在使用的scala版本是什么,scala为2.11.8',按预期工作。 – TheKojuEffect