我创建了一个抽象基类,如下所示:
abstract class parent
然后我继续创建了两个从父类继承的案例类:
case class child1(name:String,category:String) extends parent
case class child2(name:String,category1:String,category2:String) extends parent
然后,我创建了一个父类型列表并将 child1 和 child2 附加到它:
val childList = List[parent]()
scala> child1("Child","One") :: child2("Child","Two","dhshs")::childList
res2: List[parent] = List(child1(Child,One), child2(Child,Two,dhshs))
到目前为止一切顺利, List[Parent] 中有两个子类型。
现在,我想遍历 List 并根据孩子的基础类型,为该特定类型做一些特殊的事情。所以我这样做:
scala> res2 map {case child1 => "Child1";case child2 => "Child2"}
我希望看到一个List[String]("Child1","Child2")
,而不是我得到以下内容:
<console>:15: error: unreachable code
res2 map {case child1 => "Child1";case child2 => "Child2"}
现在为了更多的踢球,我做了以下事情:
scala> res2 map {r => r match {case child1 => "Child1"}}
res8: List[java.lang.String] = List(Child1, Child1)
scala> res2 map {case child1 => "Child1"}
res9: List[java.lang.String] = List(Child1, Child1)
如您所见,我将“Child1”作为我的列表条目,即使对于“child2”,我也得到了 Child1。
很困惑,谁能告诉我这是怎么回事?