只是另一个canBuildFrom问题

我正在经历集合api和返回的操作类型,它可以修改容器的类型,并且包含的​​元素的类型具有非用例形式的所有标题,类似于以下内容:
def map [B, That] (f: (A) ⇒ B)(implicit bf: CanBuildFrom[List[A], B, That]):That
很明显,对于其他收集类型肯定会“回退”
That
(如果包含的项目更改为
Int
,则
BitSet
回退到
Set
)。但是如何确定物品的类型呢?我希望返回类型为
That[B]
,但事实并非如此。为什么?请教育我:-)     
已邀请:
您已经自己给出了答案:如果您希望能够在适当的情况下返回
BitSet
,则需要在返回类型中删除该类型参数。显然,没有
BitSet[Int]
。 您需要的所有信息都已经由相应的
CanBuildFrom
含义处理,这些含义具有
CanBuildFrom[Coll, A, Traversable[A]]
类型的回退定义(或类型层次结构中可能超过
Traversable
的任何内容)。 当然,ѭ8必须是明智的,但我认为实际上可能会滥用它并返回一个真正奇怪的
That
。尽管如此,默认值非常合理。     

要回复问题请先登录注册