- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过集合 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/
我读了 official doc但我仍然无法理解它是如何工作的。例如: class A { type Self } def seqToSet[T T#Self)
我正在通过集合 api 和返回的操作类型,它可以修改容器的类型和包含的元素的类型,其非用例形式的所有标题都类似于以下内容: def map [B, That] (f: (A) ⇒ B)(implici
每个人 。请原谅我在 Scala 上问了一个愚蠢的问题。 虽然我已经用 Scala 编程了大约 2 年,但我仍然觉得很难理解 implicit用法。举个例子来讨论: Array(1,2,3,4).ma
继我提出的另一个问题之后, Scala 2.8 breakout ,我想更多地了解一下 Scala 方法 TraversableLike[A].map ,其签名如下: def map[B, That]
我正在尝试向 Traversable 添加一些方法通过拉皮条获得的特征 implicit class . 但我对 CanBuildFrom 有点迷茫特征。考虑以下: implicit class Tr
我有以下方法: def firstAndLast[CC, A, That](seq: CC)(implicit asSeq: CC => Seq[A], cbf: CanBuildFrom[CC, A
我正在试验一组自定义容器函数,并从 Scala 的集合库中获得了关于 CanBuildFrom[-From, -Elem, -To] 的灵感。隐式参数。 在 Scala 的集合中,CanBuildFr
WrappedString Scaladoc 2.8.1: “这个类作为一个包装器,用在索引序列中找到的所有操作来扩充字符串。 这个类和StringOps的区别在于调用filter和等transfor
我正在通过练习“不耐烦的 Scala”一书中的练习来学习 Scala。一个问题问: The result of "abc".map(_.toUpper) is a String, but the re
我有一个生成器从一个 Int 中生成一个字符串: class MyBuilder extends LazyBuilder[Int, String] { def result: Stri
我说奇怪是因为下面的代码编译了很长时间没有提示也没有评论。 val depth = dbStuff.lookupSomeInt(blah, blah) for (x: Int 0 to 3 res0
我是一名优秀的程序员,十分优秀!