ran*_*elo 0 comparison loops scala doobie
我有 3 个 vals,每个类型 Array[String]
它们的长度都相等
val1.length == val2.length // 真
接下来,我创建了一个案例类,如下所示:
case class resource(name: String, count: Int, location: String)
Run Code Online (Sandbox Code Playgroud)
我想建立一个列表,List[resource]使得该列表中的每个对象是从相应的元件创建的valS,即val1,val2,val3
像这样的东西:
val newList: List[resource] = (val1(0), val2(0).toInt, val3(0)),
(val1(1), val2(1).toInt, val3(1)),
...
(val1(val1.length), val2(val2.length).toInt, val3(val3.length)
Run Code Online (Sandbox Code Playgroud)
我不知道如何继续。我是使用 flatMap、foreach、for-loops 还是其他什么?
我们的想法是创建上述内容newList并将其与使用 doobie 从 SQL 数据库获得的结果进行比较。
val comparator = sql"sql statment".query[resource]
comparator.to[List].transact(xa).unsafeRunSync()
Run Code Online (Sandbox Code Playgroud)
您可以压缩数组,它将压缩序列的相应元素组合成元组,并在组合序列上使用它们map的resource.apply方法:
val val1: Array[String] = Array("name 1", "name 2", "name 3")
val val2: Array[String] = Array("1", "2", "3")
val val3: Array[String] = Array("loc 1", "loc 2", "loc 3")
scala> (val1, val2.map(_.toInt), val3).zipped.map(resource)
res1: Array[resource] = Array(resource(name 1,1,loc 1), resource(name 2,2,loc 2), resource(name 3,3,loc 3))
Run Code Online (Sandbox Code Playgroud)
然后,您可以根据需要将其转换Array为List:
scala> (val1, val2.map(_.toInt), val3).zipped.map(resource).toList
res2: List[resource] = List(resource(name 1,1,loc 1), resource(name 2,2,loc 2), resource(name 3,3,loc 3))
Run Code Online (Sandbox Code Playgroud)