Неожиданное поведение итератора на String

Может ли кто-нибудь объяснить, почему эти итераторы ведут себя по-разному? Я обычно ожидаю, что String будет вести себя как IndexedSeq[Char]. Это где-нибудь документировано?

val si: Iterator[Char] = "uvwxyz".iterator
val vi: Iterator[Char] = "uvwxyz".toIndexedSeq.iterator

val sr = for (i <- 1 to 3) 
           yield si take 2 mkString
  //sr: scala.collection.immutable.IndexedSeq[String] = Vector(uv, uv, uv)

val vr = for (i <- 1 to 3) 
           yield vi take 2 mkString
  //vr: scala.collection.immutable.IndexedSeq[String] = Vector(uv, wx, yz)
7
задан Luigi a.k.a. Rhys 28 November 2011 в 23:08
поделиться