将数组转换为案例类 scala

时间:2021-07-02 20:21:04

标签: scala

我正在拆分一个字符串以获取一个数组,然后从中构建一个案例类对象。这是我的代码。

case class Opp
  (
    a: String,
    b: String,
    c: String,
    d: String,
    e: String,
    f: String,
    g: String,
    h: String
  )
  def getStruct(fff: String): Opp = {

    val xxx = fff.split("-")
    var opp : Opp = null
    if xxx.length < 8{
      opp = Opp(xxx[0], xxx[1], xxx[2], xxx[3], xxx[4], xxx[5], xxx[6], null))
    }else{
      opp = Opp(xxx[0], xxx[1], xxx[2], xxx[3], xxx[4], xxx[5], xxx[6], xxx[7]))
    }

  }

这行得通,但有没有更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

case class Opp(a: String
              ,b: String
              ,c: String
              ,d: String
              ,e: String
              ,f: String
              ,g: String
              ,h: String)
object Opp {
  def apply(ss: Seq[String]): Opp = {
    val itr = ss.iterator ++ Iterator.continually("") //avoid null if you can
    new Opp(itr.next(), itr.next(), itr.next()
           ,itr.next(), itr.next(), itr.next()
           ,itr.next(), itr.next())
  }
}

用法:

val myopp = Opp("a-b-c-d-e".split("-"))
相关问题