Jon*_*nas 6 foreach scala jdbc prepared-statement
我使用Scala和JDBC,现在我想重用一个PreparedStatement来进行多插入.我想在数组上使用foreach-loop,但是我无法使用Scala.
val stmt = conn.prepareStatement(insertStatement)
// wrong Scala
items.foreach(item : MyItem =>
stmt.setInt(1, item.id)
stmt.setInt(2, item.value)
stmt.executeUpdate()
)
Run Code Online (Sandbox Code Playgroud)
items是一个包含多个的数组MyItem.
如何在Scala中编写这个foreach-loop并重用PreparedStatement?
And*_*yle 20
foreach如果希望将它解释为多语句块(您可以使用),则需要使用花括号作为参数.
除此之外,你正在做的事情看起来很好.这是一个REPL会话,我以类似的方式改变foreach块中的对象(为简单起见,使用StringBuilder):
scala> val sb = new java.lang.StringBuilder
sb: java.lang.StringBuilder =
scala> val items = List("tinker", "tailor", "soldier", "spy")
items: List[java.lang.String] = List(tinker, tailor, soldier, spy)
scala> items.foreach { item =>
| sb.append(item)
| sb.append("; ")
| println(sb)
| }
tinker;
tinker; tailor;
tinker; tailor; soldier;
tinker; tailor; soldier; spy;
Run Code Online (Sandbox Code Playgroud)
(并使用foreach块的括号导致错误<console>:3: error: ')' expected but '.' found.)
Kev*_*ght 11
一点点,但Andrzej的答案可以通过更自由地使用中缀符号来清理:
val sb = new java.lang.StringBuilder
val items = List("tinker", "tailor", "soldier", "spy")
items foreach { item =>
sb append item
sb append "; "
println(sb)
}
Run Code Online (Sandbox Code Playgroud)
一般情况下,它被认为是更地道用于收集操作,如缀形式map,flatMap,foreach和filter
| 归档时间: |
|
| 查看次数: |
13799 次 |
| 最近记录: |