使用foreach时将match语句转换为partial函数

时间:2014-05-20 12:47:15

标签: scala intellij-idea foreach pattern-matching

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忽略不匹配的值),或者我应该忽略提示?

1 个答案:

答案 0 :(得分:13)

放回默认案例:

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

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

IDEA很高兴:

enter image description here

事实上,如果您点击建议的操作,那么IDEA将会生成这一点(当您的插入符号指向泛黄文本时, ALT + ENTER