"omelet", -6ren">
gpt4 book ai didi

scala - 如何在 Scala 的 match case 语句中使用 Map 值

转载 作者:行者123 更新时间:2023-12-04 19:56:26 26 4
gpt4 key购买 nike

我有这样一张 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com