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楼 票数:9 已采纳

如果您阅读绿色提示:

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

因此,对于使用() and {}理解是唯一改变的是使用的分隔符:for ()你必须使用semicolon ";" 作为分隔符和{}你使用new line

  ask by T. Stone translate from so

未解决问题?本站智能推荐:

2回复

对于理解scala

我正在学习 Scala,现在我想了解如何使用 for-compreensions 进行函数组合。 这是我应该在不更改其签名的情况下实现的功能。 我几乎完成了,但我不知道如何处理其中的 None 。 你能告诉我如何修改它以获得正确的 None 处理吗? 或者也许我完全错了,for-comprehens
2回复

关于Scala的解释与Option的理解

我有以下定义: 以下评估为无: 以下评估为Some(null): 以下评估为Some(null): 我想知道为什么它们之间存在差异?
1回复

为理解而嵌套的Scala增量

我正在检测给定数据集(spark)中的 PI/SI 信息。 我有一组规则(以 csv 格式)如下 我想要做的是迭代数据集列并应用这些规则中的每一个来检查特定列是否具有 PII。 所以说,如果我有名为name列,并且给定的规则说用模式扫描此列的内容,例如Smith 。 如果我找到匹配项,我将知道此列是
5回复

Scala的理解效率如何?

在第23章“Scala编程”一书中,作者给出了一个例子: 作者说,这将转化为: 但是如果你查看map和flatmap方法定义( TraversableLike.scala ),你可能会发现,它们被定义为for循环: 好吧,我想这将继续被翻译为foreach,然后翻译成while语句,
2回复

模拟scala中的理解

我有这段代码 我想对它进行单元测试。 我想模拟table.find以返回我想要的元素序列。 我已经尝试过hasNext() Iterator接口的hasNext()和next()方法,但它似乎无法正常工作。 哪个是模拟理解的方法?
3回复

Scala对未来和选项的理解

我有两个函数返回Future[Option[String]] ,我需要将两个字符串组合成一个字符串。 我希望输出是两个字符串和页脚的组合:“文件一个文件两个向文件添加更多数据”或默认当一个或两个Future返回None :“找不到文件将更多数据添加到文件”。 怎么能实现这一目标? 编
1回复

Scala理解如果过滤太多?

我有以下程序:(Scala 2.9.2,Java6) 它产生以下输出: List((-1,-1), (-1,1), (1,-1), (1,1))我希望它仅过滤掉a和b为既 0 -不是所有的值,其中任 a或b是0。 通过将if子句更改为以下内容,可以得到我想要的行为: if (a,b) !
1回复

Scala-如何在理解块中使用foreach循环?

我有一个简单的代码: 此代码返回来自 github 的存储库列表和贡献列表。 但是现在我需要为createReposList找到的每个存储库调用createContributorsList 。 我做了一个for comprehension块: 它工作正常,它找到了给定组织(github)的存储库。