【问题标题】:Convert match statement to partial function when foreach is used使用 foreach 时将 match 语句转换为部分函数
【发布时间】:2014-05-20 12:47:15
【问题描述】:

IntelliJ 提示我以下代码:

val l = List(0, "1", 2, "3")

l.foreach{_ match {case xx:Int => println(xx);case _ =>}}

提示是“将匹配语句转换为部分函数”

当我将 foreach 更改为

l.foreach{case x:Int => println(x)}

我得到了scala.MatchError 异常。我可以使用collect 而不是foreach,但这会产生一个从未使用过的List

是否有一些常见的方法来处理这个问题(比如 foreach 忽略不匹配的值),还是我应该忽略提示?

【问题讨论】:

    标签: scala intellij-idea foreach pattern-matching


    【解决方案1】:

    放回默认大小写:

    val l = List(0, "1", 2, "3")
    
    l.foreach { case xx:Int => println(xx); case _ => }
    

    IDEA 会很高兴:

    事实上,如果你点击建议的操作(ALT+ENTER,当你的插入符号指向黄色文本),这就是 IDEA 将生成的内容

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多