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

如何使用scala中的映射结果进行模式匹配?,scala,Scala,如果我有val-myMap=Map(“一”->1,“二”->2)和myVar=2以下内容不起作用,为什么 myVar match{ case myMap("one") -> // do a certain action case _ -> // do another action } 但是,如果有一个变量代替myMap,例如val one=1,然后match变为 myVar match{ case `one` -> "first elem

如果我有
val-myMap=Map(“一”->1,“二”->2)
myVar=2
以下内容不起作用,为什么

myVar 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"
}

您会收到一个错误,因为对于模式匹配,我们需要实现unapply方法(有关更多详细信息,请阅读)-在这种情况下,映射中没有具有此类参数的unapply方法:

def unapply(z:String):选项[Int]

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

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

你到底想做什么?尝试在地图上进行模式匹配而不是从地图中提取值对我来说毫无意义。我不是试图从地图中提取任何值,而是与某个动作关联,我编辑了代码以使其更清晰