WrappedString Scaladoc 2.8.1:
“此类用作增强字符串的包装器,其中包含索引序列中的所有操作。 这个类和StringOps之间的区别在于,调用转换器方法(如filter和 map)将产生一个WrappedString 类型的对象,而不是String“
scala> import scala.collection.immutable.WrappedString
import scala.collection.immutable.WrappedString
scala> val s = new WrappedString("foo")
s: scala.collection.immutable.WrappedString = WrappedString(f, o, o)
scala> s.filter(x => true)
res1: scala.collection.immutable.WrappedString = WrappedString(f, o, o)
scala> s.map(x => x)
res2: scala.collection.immutable.IndexedSeq[Char] = Vector(f, o, o)
唉,map返回Vector而不是WrappedString。如果我理解正确的话:
过滤器可以工作,因为它只是使用newBuilder方法,但是像BitSet一样,map需要一个隐式的CanBuildFrom用于WrappedString。这是代码或文档中的错误还是我遗漏了什么?
此外,scaladoc简化版对我没有任何意义:
def map [B] (f: (Char) ⇒ B) : WrappedString[B]
def map [B, That] (f: (Char) ⇒ B)(implicit bf: CanBuildFrom[WrappedString, B, That]) : That
不应该是:
def map [B] (f: (Char) ⇒ Char) : WrappedString
def map [B, That] (f: (Char) ⇒ B)(implicit bf: CanBuildFrom[WrappedString, B, That]) : That
答案 0 :(得分:1)
第一个是一个bug,一个将被修复为2.9。