理解Scala for For循环的范围(理解)

时间:2010-05-29 22:31:46

标签: scala for-comprehension

Programming Scala的第3章中,作者给出了for循环/ for comprehension的两个例子,但是在using()和{}之间切换。为什么会出现这种情况,因为这些本身看起来像是在做同样的事情?问题breed <- dogBreeds是否在示例#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)

1 个答案:

答案 0 :(得分:9)

如果您阅读绿色提示:

  表达式的

可以用   括号或花括号,但使用   花括号意味着你不必   用分号分隔您的过滤器。   大多数时候,你更喜欢使用   当你有超过的时候会有花括号   一个过滤器,分配等。

因此,使用() and {}进行理解时,唯一更改的是所使用的分隔符:对于(),您必须使用semicolon ";"作为分隔符并使用{}你使用new line