Seq[Any] 上 scala 中的模式匹配

时间:2021-04-16 22:56:44

标签: scala

我不是 Scala 专家,但我想避免使用 asInstanceOf 并将其替换为序列的模式匹配。以下截图给了我一个错误 non-variable type argument

val seq : Seq[Any] = getSeq();

val rec = seq match {
      case rec: Seq[Record[Key, Value]] => rec
      case other => throw new Exception(s"Expected a Seq[Record[Key, Value]]")
}

我有以下带有 asInstanceOf 的代码可以工作,但想替换它:

val values = seq.asInstanceOf[Seq[Record[Key, Vrade]]].map(_.value)

1 个答案:

答案 0 :(得分:0)

您可以将元素映射到类型为 Seq[Record[Key, Vrade]] 的新列表。因此,不是匹配整个序列,而是匹配列表中的元素。

应该是这样的:

val values = seq.map {
    case x: Record[Key, Vrade]] => Some(x);
    case _ => None;
};

然后,如果您将变量作为 List 而不是 og Seq,您可以将其展平,或开始对其进行平面映射

相关问题