【问题标题】:Better scala style更好的 scala 风格
【发布时间】:2017-11-30 01:36:25
【问题描述】:

我是一个 python/go 编码器,并且是 scala 的新手。我有一段带有 if 和 else 的工作代码,但是有什么关于以“scala”方式编写它的建议吗?

if (sp.bin_an.size() > 0) {
  sp.bin_an.asScala.toList.foreach { an =>
  if (an.host != null && an.host.name != "" && an.routine == "xx") {
    service = an.host.name
  }
}

【问题讨论】:

标签: python scala functional-programming user-defined-functions scala-collections


【解决方案1】:

代替list.foreach(x => if(cond) action),你可以做一个过滤器,然后像list.filter(cond).foreach(x => action)一样foreach

所以你上面的例子可以重写为

sp.bin_an.asScala.toList.filter(an => an.host != null && an.host.name != "" && an.routine == "xx").foreach()

【讨论】:

    【解决方案2】:

    大多数情况下,您可以通过执行 mapforeach 来避免检查大小 - 如果集合为空,则不会发生任何事情。尽量避免像服务这样的变量。您最好将过滤结果分配给 val

    val service = sp.bin_an.asScala.toList.filter(an => an.host != null && an.host.name != "" && an.routine == "xx").map { an => an.host.name}

    也许 .toList 转换是多余的。

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多