【发布时间】:2015-11-28 09:54:07
【问题描述】:
总而言之,如果在 Map 中找到值,我需要一种功能方法来做一件事,如果没有找到,我需要做另一件事。 请注意,我对返回的值不感兴趣,但对已完成的操作不感兴趣。
继续阅读了解详情。
我有一个服务名称映射(友好的)到 URL PATH 的一部分(不容易记住)。 这里是初始化。
val serviceMap = Map("read" -> "cryptic-read-path",
"save" -> "cryptic-save-path", "county" -> "cryptic-zip-code-to-county-service.");
我所知道的所有替代方案都会导致 if 语句加载了 then 部分,但很简单,404 else 部分。
以下是我想到的一些内容
if (serviceMap.contains(service)) {
//Do stuff
} else {
//Issue a 404
}
相当于谓词颠倒
if (!serviceMap.contains(key)) //issue a 404
//Do stuff
上述两种方法都需要我先检查然后获取。
另一个(被Option documentation劝阻)
serviceMap.get(service) match {
case _ : Option[String]=> //Do stuff
case _ => //issue 404
}
还有第三个
serviceMap.get(service).forEach {//Dostuff and return, since it's just one element }
//issue 404 if you are here.
根据Option documentation,我鼓励我将Option 视为一个集合,所以最后一种选择似乎更好,但使用forEach 在循环后更改执行流程似乎很奇怪。
这是我的经验不足,但所有这些对我来说都显得过于冗长和不合适。你们能给我一个更好的选择或评论这些方法吗? 感谢期待!
【问题讨论】:
-
我是堆栈交换的新手。看到完全陌生的人的支持真的很感动!
-
您的问题很好,因为它显示了研究工作和您尝试过的内容。好问题得到好答案。
标签: scala dictionary scala-collections