如何使用mutable.AnyRefMap.fromZip?

时间:2017-07-25 08:46:20

标签: scala

这是我的代码:

val nums = (2 to 10).toList
val flags = List.tabulate(nums.size)(_ => 1)
val num_flags = mutable.AnyRefMap.fromZip(nums, flags)

它有例外:

cmd6.sc:1: overloaded method value fromZip with alternatives:
  [K <: AnyRef, V](keys: scala.collection.mutable.Iterable[K], values: scala.collection.mutable.Iterable[V])scala.collection.mutable.AnyRefMap[K,V] <and>
  [K <: AnyRef, V](keys: Array[K], values: Array[V])scala.collection.mutable.AnyRefMap[K,V]
 cannot be applied to (List[Int], List[Int])
val num_flags = mutable.AnyRefMap.fromZip(nums, flags)
                                  ^
Compilation Failed.

如何使用mutable.AnyRefMap.fromZip?为什么例外?

1 个答案:

答案 0 :(得分:0)

如果查看AnyRefMap.fromZip方法声明,您将看到以下约束:

K <: AnyRef

这意味着K必须是AnyRef的子类型,其中IntAnyVal的子类型。因此,编译器失败,告诉您约束不匹配。

我没有理由在这里使用AnyRefMap,如果你想要一个可变的地图,只需使用mutable.Map

def main(args: Array[String]): Unit = {
  val keys = (2 to 10).toList
  val values = List.tabulate(nums.length)(_ => 1)
  val numFlags = mutable.Map(keys.zip(values):_*)
}