Scala for 循环中的大括号和圆括号有什么区别?

Kua*_*uan 6 scala

这是我学习 Scala 的第一天(使用“Beginning Scala”一书)。当我阅读forScala 中的循环时,有两个例子:

val books = List("Beginning Scala", "Beginning Groovy", "Beginning Java", "Scala in easy steps", "Scala in 24 hours")
Run Code Online (Sandbox Code Playgroud)

[1]

for (book<-books if book.contains("Scala")) println(book)
Run Code Online (Sandbox Code Playgroud)

[2]

for { book <- books
  bookVal = book.toUpperCase()
}
println(bookVal)
Run Code Online (Sandbox Code Playgroud)

让我困惑的是:

在 [1] 中for使用括号“ ()”来包装循环控制块,而在 [2] 中它使用花括号“ {}”。我想知道这是否只是不同的语法但目的相同,还是它们实际上意味着不同的东西?

谢谢

Ser*_*tin 4

如果您有多行表达式或包含很少其他表达式的表达式,通常会使用大括号。如果您能够(或想要)使用分号编写单行,则可以使用括号。for您可以使用大括号编写每个循环,但会减少括号的使用。

如果有其他情况,大括号允许您使用更简单的语法来编写部分函数或模式匹配。

如果你在 REPL 中编写以下代码:

for (
    i <- List(1,2,3)
    y = i * i
) yield y
Run Code Online (Sandbox Code Playgroud)

它不会编译例如