加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为什么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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读