scala - 如何在 Scala 中使用 foreach 循环来改变对象?

标签 scala jdbc foreach prepared-statement

我使用 Scala 和 JDBC,现在我想重用 PreparedStatement做一个多插入。我想在数组上使用 foreach 循环,但我无法用 Scala 正确处理。

val stmt = conn.prepareStatement(insertStatement)

// wrong Scala
items.foreach(item : MyItem =>
    stmt.setInt(1, item.id)
    stmt.setInt(2, item.value)
    stmt.executeUpdate()
    )
items是一个包含多个 MyItem 的数组.

如何在 Scala 中编写这个 foreach 循环并重用 PreparedStatement ?

最佳答案

您需要对 foreach 的参数使用花括号。如果您希望将其解释为多语句块(您这样做)。

除此之外,你在做什么看起来不错。这是一个 REPL session ,我以类似的方式改变 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;

(并且对 foreach 块使用括号会导致错误 <console>:3: error: ')' expected but '.' found. )

关于scala - 如何在 Scala 中使用 foreach 循环来改变对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7253960/

相关文章:

sql - 使用 scala 在 spark sql 中编写 UDF

mysql - GlassFish Server jdbc 无法将记录插入数据库

java - JDBC 中 sql 语句的 Select 子句中的游标

ios - 如何在SwiftUI中在 View 上使用Foreach?

php - 限制标签云中的每个循环

java - 从 Java 创建 `KafkaServer`

java - scala:为什么 1/0 是算术异常但 1.0/0.0 = Double.Infinity

java - 如何在where条件下传递多个搜索值

javascript - 这段代码如何在数组中搜索多个值?

scala - 如何在 Scala 中导入 .txt 文件