为什么scaladoc说HashMap.toArray返回Array [A]而不是Array [(A,
发布时间:2020-12-16 09:49:14 所属栏目:安全 来源:网络整理
导读:我正在查看toArray的哈希映射定义: http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.HashMap 它有 toArray: Array[A]def toArray[B : (A,B)](implicit arg0: ClassTag[B]): Array[B] 我不太明白这一点 – 第一位说你得到一个
我正在查看toArray的哈希映射定义:
http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.HashMap 它有 toArray: Array[A] def toArray[B >: (A,B)](implicit arg0: ClassTag[B]): Array[B] 我不太明白这一点 – 第一位说你得到一个数组[A],但第二部分说你得到数组[B]?这些都不是我所期望的 – 数组[(A,B)] 当我自己检查时: scala> val x = scala.collection.mutable.HashMap[String,Int]() x: scala.collection.mutable.HashMap[String,Int] = Map() scala> x.put("8",7) res0: Option[Int] = None scala> x foreach println (8,7) scala> x.toArray res2: Array[(String,Int)] = Array((8,7)) 为什么不喜欢toList? toList: scala.List[(A,B)] 解决方法
scaladoc有各种微妙的错误.这里的问题是你正在看到方法签名的“简化”版本(意味着传达签名的基本部分并在map / flatMap方法中隐藏诸如CanBuildFrom之类的东西,这实际上是一个实现细节).
简化在这里有点不对,似乎没有多大意义. 如果单击“完整签名”链接,您将看到真正的签名如下所示: def toArray[B >: (A,B)](implicit arg0: ClassTag[B]): Array[B] 事实上这仍然是错误的,因为我们当然不能有B类型B (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |