我有这样的地图:
val mealIdsMap: Map[String, String] =
Map (
"breakfast" -> "omelet",
"lunch" -> "steak",
"dinner" -> "salad"
)
Run Code Online (Sandbox Code Playgroud)
然后我尝试在匹配语句中使用它,如下所示:
"omelet" match
{
case mealIdsMap("breakfast") => "Thank God"
}
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
error: value mealIdsMap is not a case class constructor,
nor does it have an unapply/unapplySeq method
case mealIdsMap("breakfast") => "Thank God"
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何在匹配/案例陈述中使用这样的地图?
非常感谢你的帮助.
您应该从教程中了解模式匹配的目的是什么,可能来自这个(谷歌上的第一个非常重要的例子).
你颠倒了测试:
mealIdsMap("breakfast") match {
case "omelet" => "Thank God"
case _ => "Don't forget a default"
}
Run Code Online (Sandbox Code Playgroud)
如果你不确定密钥是否存在(即使你是,如果你想编写惯用的scala,你应该更喜欢:
mealIdsMap.get("breakfast") match {
case Some("omelet") => "Thank God"
case _ => "Don't forget a default"
}
Run Code Online (Sandbox Code Playgroud)
当get返回一个选项,避免你尝试抓住你的代码或让它打破静默.
| 归档时间: |
|
| 查看次数: |
5517 次 |
| 最近记录: |