gpt4 book ai didi

scala - 只是另一个 canBuildFrom 问题

转载 作者:行者123 更新时间:2023-12-04 06:36:14 25 4
gpt4 key购买 nike

我正在通过集合 api 和返回的操作类型,它可以修改容器的类型和包含的元素的类型,其非用例形式的所有标题都类似于以下内容:

def map [B, That] (f: (A) ⇒ B)(implicit bf: CanBuildFrom[List[A], B, That]):That
很明显,使用 That 肯定可以“回退”到其他集合类型。 (如 BitSet 回退到 Set 如果包含的项目更改为 Int 以外的情况)。但是如何确定物品的类型呢?我希望返回类型为 That[B] ,但事实并非如此。为什么?请教育我:-)

最佳答案

您自己已经给出了答案:如果您希望能够返回 BitSet在适当的情况下,您需要在返回类型中删除该类型参数。没有BitSet[Int] , 明显地。

您需要的所有信息都已由相应的 CanBuildFrom 处理。具有类型 CanBuildFrom[Coll, A, Traversable[A]] 的回退定义的隐式(或类型层次结构中可能超过 Traversable 的任何内容)。

当然,CanBuildFrom必须是明智的,但我认为实际上可以滥用它并返回一个真正奇怪的 That .尽管如此,默认值是相当理智的。

关于scala - 只是另一个 canBuildFrom 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4840391/

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