簡體   English   中英

Case類的Scala數組

[英]Scala Array of Case Class

我有一個案例班。

case class Tax(state: String, code: String, pr: String, lic: String)

我正在使用playframework從H2數據庫查詢數據。 查詢返回多列。 以下是表結構。

Create table t(key bigint primary key, state1 varchar(10), code1 varchar(15), pr1 varchar(1), lic1 varchar(10), state2 varchar(10), code2 varchar(15), pr2 varchar(1), lic2 varchar(10), state3 varchar(10), code3 varchar(15), pr3 varchar(1), lic3 varchar(10), state4 varchar(10), code4 varchar(15), pr4 varchar(1), lic4 varchar(10));

我想創建案例類的數組/列表,並在其中包含4種行。

val taxes= List[Tax]
  if (rs.next()) {
    var a=1
    while (!Option(rs.getString("state"+a)).getOrElse("").isEmpty){

      val tax = Taxonomy(rs.getString("state"+a),rs.getString("code"+a),rs.getString("pr"+a),rs.getString("lic"+a))
      //taxonomies = taxonomy Here I want to create array/list of taxonomy
      a = a + 1
      return taxonomy
    }
  }
} finally {
  conn.close()
}

關於數據庫訪問庫的評論很好。 長期來看會更好。 但是根據您的用例,可能會適得其反。 這是我直接寫的方式:

val taxes = if(rs.next()) {
  (1 to 4).map { a =>
    for {
      state <- Option(rs.getString("state"+a))
      code <- Option(rs.getString("code"+a))
      pr <- Option(rs.getString("pr"+a))
      lic <- Option(rs.getString("lic"+a))
    } yield Tax(state, code, pr, lic)
  }.toList.flatten
} else {
  List.empty[Tax]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM