WrappedString Scaladoc 2.8.1:
“此类充当包装字符串,以索引序列中发现的所有操作来扩展String。
此类与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,map返回一个Vector而不是WrappedString。如果我正确理解:
过滤器可以工作,因为它仅使用newBuilder方法,但是地图需要WrappedString的隐式CanBuildFrom,就像BitSet一样。这是代码或文档中的错误,还是我缺少什么?
另外,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
?
最佳答案
第一个是错误,应该在2.9中修复。