【问题标题】:scala for comprehension throwing error for Mapscala 用于 Map 的理解抛出错误
【发布时间】:2019-05-15 14:15:32
【问题描述】:

我有下面的代码 sn-p,常规的 for 循环可以正常工作。 但是 for 理解会抛出错误

println("Using for loop")
for( (key, value) <- orec.groupBy(x => x.continent) )
  {
  println(key + value.length )
}

println("Using for comprehension")
for{
  (key, value) <- orec.groupBy(x => x.continent)
  println(key + value.length )
} yield (key,value)

错误信息是

Error:(84, 5) '<-' expected but '}' found.
    } yield (key,value)

我无法理解代码有什么问题。请帮助解决问题

【问题讨论】:

    标签: scala for-comprehension


    【解决方案1】:

    printlnfor 理解中不起作用。它应该如下所示。

    for {
      (key, value) <- orec.groupBy(x => x.continent)
      _ = println(key + value.length )
    } yield (key,value)
    
    1. 理解式应始终在其第一条语句中以

    2. 所有&lt;- 中的理解都没有flatMap 期望最后一个是map

    您应该将_ = 用于不符合 for comprehension 建立的初始上下文的副作用任务。

    我推荐这个tutorial。它更优雅地解释了推导式。

    【讨论】:

      【解决方案2】:

      你不能在 for comprehension 中使用这样的打印,你可以像这样使用它们:

      for{
        (key, value) <- orec.groupBy(x => x.continent) 
      } yield println(key + value.length )
      

      【讨论】:

        猜你喜欢
        • 2014-08-22
        • 2016-11-28
        • 2014-11-17
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 2022-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多