首页 > 解决方案 > 你能在 Scala 中拥有一系列案例对象吗?

问题描述

你能在 Scala 中有一个案例对象类型的 Seq 吗?

IE

case object SuccessResult

case class Results(successes: Seq[SuccessResult])

(IntelliJ 将 SuccessResult 显示为红色)

标签: scala

解决方案


是的,您可以在基本的 Scala REPL 或 Ammonite 中轻松测试它(我更喜欢后者):

@ case object A
defined object A

@ Seq(A, A, A)
res14: Seq[A.type] = List(A, A, A)

类型推断使其也适用于案例对象的密封层次结构(基本上是枚举):

@ {
  sealed trait Foo
  case object Bar extends Foo
  case object Baz extends Foo
  }
defined trait Foo
defined object Bar
defined object Baz

@ Seq(Bar, Bar, Baz, Baz, Bar, Baz)
res16: Seq[Product with Foo with Serializable] = List(Bar, Bar, Baz, Baz, Bar, Baz)

推荐阅读