scala - 如何针对可变和不可变 Map 进行编程?
问题描述
我想写一个函数
def doSomething(m: Map[X, Y]): Z = ???
对于某些给定的类型X, Y, Z
。
该函数将对immutable.Map
和执行相同的操作mutable.Map
。
有什么办法可以写吗?
解决方案
两者immutable.Map
和mutable.Map
扩展scala.collection.Map
。
package scala
package collection
trait Map[A, +B] extends Iterable[(A, B)] with GenMap[A, B] with MapLike[A, B, Map[A, B]] {
def empty: Map[A, B] = Map.empty
override def seq: Map[A, B] = this
}
看上面你会看到这是 Scala 中用于描述 Map 的通用接口。因此你的功能可能是def doSomething(m: scala.collection.Map[X, Y]): Z = ???
您仍然可以使用大多数 Map 接口函数,但是,那些未在 mutable 和 immutable 之间共享的函数将不存在。
推荐阅读
- ajax - 创建自定义 Yajra 数据表时遇到格式不正确的数值
- apache-spark - get_json_obj _fails for SelectExpr() 但适用于 Pyspark 中的 Select
- jquery - 如何从值中删除逗号和小数
- python - 打开文件时使用openpyxl删除excel表引发错误
- android - 如何在地图中心获取位置(纬度,经度)Xamarin Forms
- android - 进程死亡后如何使用接口在活动之间进行通信?
- ios - 如何在图表饼图中添加子视图/视图?
- amazon-web-services - ElasticBeanstalk“eb ssh”抛出错误:“主机密钥验证失败。”
- c - C - Buffersize 条件不中断 while 循环
- python - 从按位编码的数组中提取通道