如果密钥存在,则在Scala映射中向元素添加数字的好方法或不插入新
发布时间:2020-12-16 09:02:13 所属栏目:安全 来源:网络整理
导读:我知道几个类似的问题.它们对我没有帮助 – 如果没有现有密钥,代码就不起作用. 我只需要一些很好的方法来附加Map,将值添加到现有密钥(如果它确实存在)或将其作为新密钥(如果map不包含适当的密钥). 以下代码有效,但我不喜欢它: val a = collection.mutable.M
我知道几个类似的问题.它们对我没有帮助 – 如果没有现有密钥,代码就不起作用.
我只需要一些很好的方法来附加Map,将值添加到现有密钥(如果它确实存在)或将其作为新密钥(如果map不包含适当的密钥). 以下代码有效,但我不喜欢它: val a = collection.mutable.Map(("k1" -> 1),("k2" -> 5)) val key = "k1" val elem = a.get(key) if (elem == None) { a += ("k5" -> 200) } else { a.update(key,elem.get + 5) } 有没有更好的一点? 例如,这是similar question,但我还需要考虑那里没有计算的不存在密钥的情况.至少我们应该理解a.get(key)可以是None或者添加更好的方法.好主意是| |但我想保留基本的Scala 2.10.x. 解决方法
您可以为此创建自己的功能:
def addOrUpdate[K,V](m: collection.mutable.Map[K,V],k: K,kv: (K,V),f: V => V) { m.get(k) match { case Some(e) => m.update(k,f(e)) case None => m += kv } } addOrUpdate(a,"k1","k5" -> 200,(v: Int) => v + 5) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- angularjs – 防止$anchorScroll修改url
- angular 2获取Angular 2中的元素以用于Material design lit
- twitter-bootstrap – 文本输入内的Twitter Bootstrap下拉
- Webservice的cxf开发_使用spring发布服务+ajax调用服务
- 我如何使用bash将环境传递给docker?
- 如果你手头没鼠标,又不要敲过多字符,try it
- Google SRE主管:使用开源软件打造类似Google的开发和生产环
- 如何在scala中取消转义字符串?
- Lotus domino 8.5 WebService 一 (使用SoapToolkit3.0消费W
- The Best BootStrap Resources