【问题标题】:Flatten syntax with yield - improving code readability使用 yield 扁平化语法 - 提高代码可读性
【发布时间】:2017-02-02 14:09:16
【问题描述】:

我正在尝试提高我的代码的可读性,但我很难处理这个小块。

Foo 是一个接受 List[Ping] 的方法

Thing.generate 返回一个列表[Ping]

ListOfPings 是一个列表[Ping]

hasQuality 通过评估 Ping 返回一个布尔值

代码如下:

foo((for {
          pinger <- listOfPings
        } yield pinger.generate.filter(_.hasQuality)).flatten)

listOfPingss 中的每个 Ping 都使用 generate 方法创建一个 List[Thing],这意味着循环结束时 yield 的结果是一个 List[List[Ping]]。

我正在展平 List[List[Ping]](不是单个列表),并将整个结果放入 foo

我无法使这个看起来更好,可能是使用平面地图?衷心感谢您的帮助。

【问题讨论】:

    标签: scala loops flatten


    【解决方案1】:

    类似:

    foo {
      for (p <- listOfPings ; q <- p.generate if q.hasQuality) yield q
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 1970-01-01
      • 2010-10-07
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      相关资源
      最近更新 更多