Scala for循环中的花括号和括号之间有什么区别

时间:2015-08-10 18:40:46

标签: scala

所有

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

val books = List(“Beginning Scala”,“Beginning Groovy”,“Beginning Java”,“Scala in easy steps”,“Scala in 24 hours”)

[1]

for (          book<-books if book.contains("Scala")    )   println(book)

[2]

for {     book <- books
          bookVal = book.toUpperCase()
}         println(bookVal)

令我困惑的是:

在[1] FOR中使用括号“()”来包装循环控制块,而在[2]中它使用大括号“{}”,我想知道这是不同的语法,但它们是相同的目的还是它们实际意义不同?

由于

1 个答案:

答案 0 :(得分:4)

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

如果其他一些花括号允许您使用更简单的语法来编写部分函数或模式匹配。

如果你在代码中写下REPL:

for (
    i <- List(1,2,3)
    y = i * i
) yield y

它不会编译,例如。