如何在scala中使用Map的结果进行模式匹配?

时间:2016-09-09 07:15:02

标签: scala

如果我有myVar = 2myVar match{ case myMap("one") -> // do a certain action case _ -> // do another action } 以下内容不起作用,为什么?

myMap

但这有效,如果不是val one = 1我有变量,例如match然后myVar match{ case `one` -> "first element" case _ -> "second element" } 变为

HtmlViewHelper.php

1 个答案:

答案 0 :(得分:3)

你得到一个错误,因为对于模式匹配,我们需要实现unapply方法(更多细节阅读this) - 在这种情况下,Map中没有这种参数的unapply方法:

def unapply(z: String): Option[Int]

作为一个选项,您可以这样写:

myVar match {
  case x if x == myMap("one") => "first element"
  case _                      => "second element"
}