在第3章中 编程Scala, ,作者给出了两个示例for loops / for for Gonallensions,但是在使用()和{}'s之间进行切换。为什么这是这种情况,因为这些本质上看起来像是在做同样的事情?有原因吗 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)
有帮助吗?

解决方案

如果您阅读绿色提示:

对于表达式可以用括号或卷曲括号定义,但是使用卷发括号意味着您不必用半圆柱分离过滤器。在大多数情况下,当您拥有多个过滤器,分配等时,您会更喜欢使用卷曲括号。

因此,为了理解 () and {} 是相同的唯一变化的是使用的分离器: () 您必须使用 semicolon ";" 作为分离器和 {} 你用 new line.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top