了解 Scala 的 For 循环范围(用于理解)

发布于 2024-09-03 14:54:58 字数 493 浏览 7 评论 0原文

Programming Scala的第3章中,作者给出了两个for循环的例子/ for推导式,但在使用 () 和 {} 之间切换。为什么会出现这种情况,因为这些本质上看起来像是在做同样的事情? 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)

In Chapter 3 of Programming Scala, the author gives two examples of for loops / for comprehensions, but switches between using ()'s and {}'s. Why is this the case, as these inherently look like they're doing the same thing? Is there a reason breed <- dogBreeds is on the 2nd line in example #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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

年少掌心 2024-09-10 14:54:58

如果您阅读了绿色提示:

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

因此,对于 () 和 {} 的理解是相同的,唯一改变的是使用的分隔符:对于 () 你必须使用分号“;”作为分隔符,对于{},您使用换行

If you read the green Tip:

for expressions may be defined with
parenthesis or curly braces, but using
curly braces means you don’t have to
separate your filters with semicolons.
Most of the time, you’ll prefer using
curly braces when you have more than
one filter, assignment, etc.

So for comprehension with () and {} are the same the only thing that change is the separator used : for () you have to use a semicolon ";" as separator and for {} you use new line.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文