我有这样一张 map :
val mealIdsMap: Map[String, String] =
Map (
"breakfast" -> "omelet",
"lunch" -> "steak",
"dinner" -> "salad"
)
然后我尝试在这样的匹配语句中使用它:
"omelet" match
{
case mealIdsMap("breakfast") => "Thank God"
}
我得到这个错误:
error: value mealIdsMap is not a case class constructor,
nor does it have an unapply/unapplySeq method
case mealIdsMap("breakfast") => "Thank God"
有人知道如何在 match/case 语句中使用这样的映射吗?
非常感谢您的帮助。
最佳答案
你应该从一个教程中读到模式匹配的目的是什么,可能来自this one (谷歌上的第一个不平凡的例子)。
你已经反转了测试:
mealIdsMap("breakfast") match {
case "omelet" => "Thank God"
case _ => "Don't forget a default"
}
如果您不确定 key 是否存在(即使您是,如果您想编写惯用的 Scala,您应该更喜欢:
mealIdsMap.get("breakfast") match {
case Some("omelet") => "Thank God"
case _ => "Don't forget a default"
}
get
返回一个选项,避免您 try catch 您的代码或让它静静地中断。
关于scala - 如何在 Scala 的 match case 语句中使用 Map 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10433539/