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

scala – 为什么zipWithIndex在Iterable中实现而不是Traversable

发布时间:2020-12-16 09:02:02 所属栏目:安全 来源:网络整理
导读:我正在阅读“ Scala 2ed编程”.在第24.4节中,注意到Iterable包含许多在没有迭代器的情况下无法有效写入的方法.表24.2包含这些方法.但是,我不明白为什么有些它们无法在迭代器上有效实现.例如,考虑zipWithIndex. def zipWithIndex[A1 : A,That](implicit bf: C
我正在阅读“ Scala 2ed编程”.在第24.4节中,注意到Iterable包含许多在没有迭代器的情况下无法有效写入的方法.表24.2包含这些方法.但是,我不明白为什么有些它们无法在迭代器上有效实现.例如,考虑zipWithIndex.

def zipWithIndex[A1 >: A,That](implicit bf: CanBuildFrom[Repr,(A1,Int),That]): That = {
    val b = bf(repr)
    var i = 0
    for (x <- this) {
      b += ((x,i))
      i +=1
    }
    b.result
  }

为什么不将此定义移动到可遍历?在我看来,代码可能完全相同,并且效率没有差别.

解决方法

你是完全正确的,你的实现应该有效.没有充分理由在Iterable中定义zipWithIndex而不是Traversable;既不保证遍历中元素的排序.

(这是我在StackOverflow上的第一个答案.希望我一直很有帮助.:)如果我没有,请告诉我.)

(编辑:李大同)

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

    推荐文章
      热点阅读