来自序列的Scala案例类

Nul*_*yte 1 scala tuples sequence

case class Foo(a: Int, b: Int, c: Int)


val s = Seq(1, 2, 3)
val t = (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

我知道我可以从元组创建案例类:

Foo.tupled(t)
Run Code Online (Sandbox Code Playgroud)

但是如何从 Sequence 创建案例类?我在序列中有 ~10 个整数元素。

Mar*_*lic 5

一种选择是向apply伴随对象添加相应的工厂方法,如下所示

object Foo {
  def apply(xs: Seq[Int]): Option[Foo] = {
    xs match {
      case Seq(a, b, c) => Some(Foo(a, b, c))
      case _ => None
    }
  }
}

Foo(s) // : Option[Foo] = Some(value = Foo(a = 1, b = 2, c = 3))
Run Code Online (Sandbox Code Playgroud)