这是我的代码:
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?为什么例外?
答案 0 :(得分:0)
如果查看AnyRefMap.fromZip
方法声明,您将看到以下约束:
K <: AnyRef
这意味着K
必须是AnyRef
的子类型,其中Int
是AnyVal
的子类型。因此,编译器失败,告诉您约束不匹配。
我没有理由在这里使用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):_*)
}