【问题标题】:scala case class from sequence来自序列的scala案例类
【发布时间】:2021-08-12 09:37:01
【问题描述】:
case class Foo(a: Int, b: Int, c: Int)


val s = Seq(1, 2, 3)
val t = (1, 2, 3)

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

Foo.tupled(t)

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

【问题讨论】:

    标签: scala tuples sequence


    【解决方案1】:

    一种选择是将相应的 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))
    

    【讨论】:

      【解决方案2】:

      这个怎么样?

      case class Foo(xs: Int*)
      
      val a = Foo(1,2,3)
      val b = Foo(1,2,3,4,5)
      val c = Foo((1 to 10).toList: _*)
      
      println(a.xs)  // Seq[Int](1,2,3)
      println(c.xs)  // Seq[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
      
      

      【讨论】:

      • OP 不想更改 case class
      猜你喜欢
      • 2017-03-29
      • 2015-03-31
      • 2015-08-05
      • 2021-11-06
      • 2013-09-04
      • 2013-08-12
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      相关资源
      最近更新 更多