gpt4 book ai didi

scala - 将 map 方法应用于 Scala 中的 BitSet

转载 作者:行者123 更新时间:2023-12-04 15:22:31 26 4
gpt4 key购买 nike

使用可变 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,Int,That]
x.map(_ + 3)

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

最佳答案

您可以使用

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

这更接近代码的原始版本。方法 map需要创建一个新的集合实例来产生结果,所以它寻找一个 implicit它可以使用的方法。然而,隐式的匹配只根据签名进行,这样会找到两个候选,从而导致错误。我认为这是相当复杂的类和特征层次结构的结果,其中一些冗余没有被消除。解决方法是显式提供构建方法,而不是依赖隐式。

关于scala - 将 map 方法应用于 Scala 中的 BitSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24043612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com