scala.collection.immutable.WrappedString нужен неявный CanBuildFrom для выполнения документированных функций? - PullRequest
4 голосов
/ 09 февраля 2011

WrappedString Scaladoc 2.8.1:

"Этот класс служит оболочкой, дополняющей строки со всеми операциями, найденными в индексированных последовательностях. Разница между этим классом и StringOps заключается в том, что они вызывают методы преобразования, такие как filter и *Карта 1003 * выдаст объект типа WrappedString вместо строки "

  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)

Увы, карта возвращает Vector, а не WrappedString.Если я правильно понимаю:

Фильтр работает, поскольку он просто использует метод newBuilder, но для map требуется неявный CanBuildFrom для WrappedString, как это имеет 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

?

1 Ответ

1 голос
/ 09 февраля 2011

Первым будет ошибка, исправленная за 2.9.

...