Khi tôi đánh giá một for
tại Scala, tôi nhận được một bất biến IndexedSeq
(một bộ sưu tập với những đặc điểm mảng như hiệu suất, chẳng hạn như truy cập ngẫu nhiên hiệu quả):Bộ sưu tập kiểu tạo bởi để có năng suất
scala> val s = for (i <- 0 to 9) yield math.random + i
s: scala.collection.immutable.IndexedSeq[Double] = Vector(0.6127056766832756, 1.7137598183155291, ...
Liệu một for
với yield
luôn trả về IndexedSeq
hoặc có thể trả lại một số loại thu thập khác (ví dụ: LinearSeq
)? Nếu nó cũng có thể trả lại cái gì khác, thì cái gì quyết định kiểu trả về, và làm thế nào tôi có thể ảnh hưởng đến nó?
Tôi đang sử dụng Scala 2.8.0.RC3.
Hãy nhìn vào http://stackoverflow.com/question/1052476/can-someone-explain-scalas-yield/1059501 # 1059501 và http://stackoverflow.com/questions/1721356/scala-2-8-canbuildfrom –