将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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |