【发布时间】:2015-04-27 02:38:50
【问题描述】:
对于在有限域内返回值的一长串案例,如何减少原本不断增长的案例声明数量?例如考虑
"abc" match {
case "a" => 1
case "ab" => 1
case "aw" => 2
case "hs" => 2
case "abc" => 1
case _ => 0
}
试过Map[Set[String],Int]哪里
val matches = Map( Set("a","ab","abc") -> 1, Set("aw","hs") -> 2 )
并定义
def getMatch(key: String, m: Map[Set[String],Int]) = {
val res = m.keys.collectFirst{ case s if s(key) => m(s) }
res.getOrElse(0)
}
有没有更简单和/或更有效的方法?
【问题讨论】:
-
嗯...对于与此类似的情况,为什么要通过添加对所有键进行迭代的需要来降低性能?为什么不自己使用
Maps 呢?只需拥有Map[ String, Int ]并将所有“案例”放入其中。 -
非常感谢您的想法,这也是一个可行的解决方案,尽管减少值的重复性也在查询范围内。
标签: scala pattern-matching scala-collections