私はScala for the Impatientを読んでいます。私は頭を傷つけている何かを見つけました。Scalaの返品タイプ/返品
次の文字列を返します。
scala> for (c<-"Hello"; i <- 0 to 1) yield (c+i).toChar
res68: String = HIeflmlmop
をしかし、これはベクトルを返します。
scala> for (i <- 0 to 1; c <- "Hello") yield (c + i).toChar
res72: scala.collection.immutable.IndexedSeq[Char] = Vector(H, e, l, l, o, I, f, m, m, p)
これらの2つの例を、先行するテキストが...
「ときに体を読み込み、 forループのyieldで始まる場合、ループ は各反復ごとに1つの値の集合を構築します。このタイプのlo opは、理解のために呼ばれます。生成されたコレクションは、最初のジェネレータと互換性があります。
生成されたコレクションは、なぜ、次のように、範囲の型を返す第二の例ではありません、最初の発電機との互換性がある場合:
scala> val range = 0 to 1
range: scala.collection.immutable.Range.Inclusive = Range(0, 1)
または私は完全に何を誤解していますテキストは、 "...生成されたコレクションは、最初のジェネレータと互換性があります。
、それがどのように機能するかについて、より良いビューを取得するには、[この優れた解答](http://stackoverflow.com/a/1716558/406435)を見てみましょう。そして[ここに](http://www.devoxx。com/display/FR13/Martin + Odersky)(42:40から開始)Martin Odersky自身が、スカラコレクションの歴史、モチベーション、実装について説明しています。 – senia