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

将map方法应用于Scala中的BitSet

发布时间:2020-12-16 18:35:54 所属栏目:安全 来源:网络整理
导读:使用可变的BitSet,我尝试将值3添加到其所有组件中,但是我收到了此错误. val x = BitSet()x.add(10); x.add(20)x.map(_ + 3) 这是消息. console:12: error: ambiguous implicit values: both method newCanBuildFrom in class SortedSetFactory of type [A](i
使用可变的BitSet,我尝试将值3添加到其所有组件中,但是我收到了此错误.

val x = BitSet()
x.add(10); x.add(20)
x.map(_ + 3)

这是消息.

<console>:12: error: ambiguous implicit values:
 both method newCanBuildFrom in class SortedSetFactory of type [A](implicit ord: Ordering[A])scala.collection.generic.CanBuildFrom[scala.collection.mutable.SortedSet.Coll,A,scala.collection.mutable.SortedSet[A]]
 and method canBuildFrom in object BitSet of type => scala.collection.generic.CanBuildFrom[scala.collection.mutable.BitSet,Int,scala.collection.mutable.BitSet]
 match expected type scala.collection.generic.CanBuildFrom[scala.collection.mutable.BitSet,That]
              x.map(_ + 3)

我可以使用BitSet(x.toArray.map(_ 3):_ *)来获得我期望的结果,但我想可能有更好的方法.在Scala中的BitSet中应用map有什么问题?

解决方法

您可以使用

x.map(_ + 3)(BitSet.canBuildFrom)

这更接近原始版本的代码.方法映射需要创建一个新的集合实例来生成结果,因此它会查找它可以使用的隐式方法.然而,仅基于签名执行隐含的匹配,并且这样找到导致错误的两个候选者.我认为这是一个相当复杂的类和特征层次结构的结果,其中一些冗余没有消除.解决方法是显式提供构建方法,而不是依赖于implicits.

(编辑:李大同)

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

    推荐文章
      热点阅读