9

Programming Scala的第 3 章中,作者给出了 for 循环 / for 推导式的两个示例,但在使用 () 和 {} 之间切换。为什么会出现这种情况,因为它们本质上看起来像是在做同样的事情?breed <- dogBreeds示例#2中的第2行是否有原因?

// #1 ()'s
for (breed <- dogBreeds
  if breed.contains("Terrier");
  if !breed.startsWith("Yorkshire")
) println(breed)

// #2 {}'s
for {
  breed <- dogBreeds
  upcasedBreed = breed.toUpperCase()
} println(upcasedBreed)
4

1 回答 1

9

如果您阅读绿色提示:

for 表达式可以用括号或花括号定义,但使用花括号意味着您不必用分号分隔过滤器。大多数时候,当您有多个过滤器、分配等时,您会更喜欢使用花括号。

因此,对于理解与() and {}是相同的,唯一改变的是使用的分隔符:因为()你必须使用 asemicolon ";"作为分隔符并且{}你使用new line.

于 2010-05-29T23:40:53.587 回答