Có ai giải thích tại sao các trình vòng lặp này hoạt động khác nhau không? Tôi thường mong đợi một Chuỗi hoạt động như một số IndexedSeq[Char]
. Tài liệu này có ở bất kỳ đâu không?Hành vi không mong muốn của trình lặp trên chuỗi
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)
Có vẻ như '.take (2)' trong ví dụ đầu tiên tạo một bản sao của trình lặp. – ziggystar