1

当我在 Play 中阅读时!docs 我找到了一种将结果解析为 List[(String, String)] 的方法

像这样:

// Create an SQL query
val selectCountries = SQL("Select * from Country")

// Transform the resulting Stream[Row] as a List[(String,String)]
val countries = selectCountries().map(row => 
row[String]("code") -> row[String]("name")
).toList

我想这样做,但我的元组将包含更多数据。

我正在这样做:

val getObjects = SQL("SELECT a, b, c, d, e, f, g FROM table")
  val objects = getObjects().map(row =>
    row[Long]("a") -> row[Long]("b") -> row[Long]("c") -> row[String]("d") -> row[Long]("e") -> row[Long]("f") -> row[String]("g")).toList

我得到的每个元组都将采用这种格式,当然,这就是我在上面的代码中要求的:

((((((Long, Long), Long), String), Long), Long), String)

但我想要这个:

(Long, Long, Long, String, Long, Long, String)

我要问的是我应该如何解析结果以生成一个像上面最后一个一样的元组。我想像他们在 List[(String, String)] 文档中所做的那样,但有更多数据。

谢谢

4

1 回答 1

2

你得到((((((Long, Long), Long), String), Long), Long), String)的原因是->,每次调用 this 都会将两个元素包装成一对。因此,对于每个->你有一个元组,然后你拿这个元组并制作一个新的,等等。你需要用逗号更改箭头并换行()

val objects = getObjects().map(row =>
    (row[Long]("a"), row[Long]("b"), ..., row[String]("g")).toList

但请记住,当前元组中的元素不能超过 22 个。

于 2013-09-27T13:02:01.013 回答