Вот пример:
scala> val xs = List(1,2,3).toIterator.toSeq
xs: Seq[Int] = Stream(1, ?)
Последовательность - это материализованная коллекция (по умолчанию это List
), поэтому я ожидал, что toSeq
вернет List
, а не Stream
Реализация находится в TraversableOnce,
def toSeq: Seq[A] = toStream
почему он не отменяется в TraversableLike?
Seq
, зачем вам это? Всегда естьtoList
,toVector
и т. Д., Если они вам действительно нужны. - person Travis Brown   schedule 17.10.2014Seq
- этоStream
. Если вам интересно, используйте другойtoX
метод. - person Travis Brown   schedule 17.10.2014IndexedSeq
, которая не требует использования итератора. На самом деле нет какой-либо реализации по умолчанию дляSeq
илиIndexedSeq
- есть тот, который возвращаетсяapply
для сопутствующего объекта, но это не какой-то особый статус. Кроме того, сведения о том, какой подтип используется, конечно, статически недоступны и могут быть изменены. - person Travis Brown   schedule 18.10.2014Stream
не должен использовать итератор, и этоSeq
. КонтрактIndexedSeq
требует постоянного доступа по индексу, что означает, что нам нужно вытащить все элементы из итератора. - person Travis Brown   schedule 18.10.2014toSeq
иtoIndexedSeq
- она полностью улавливается их возвращаемыми типами. Речь идет о деталях реализации. - person Travis Brown   schedule 18.10.2014