我是一個新手,試圖讀取文件並創建一個矢量[矢量[字符]]。文件的每一行應該導致不同的向量。從文件創建一個矢量[矢量[字符]]
下面是我想出:
val empty: Vector[Vector[Char]] = Vector()
lazy val lines: List[String] = Source.fromFile("test.txt").getLines.toList
lazy val vecList: List[Vector[Char]] = lines.map(str => Vector(str: _*))
lazy val vector: Vector[Vector[Char]] = vecList.foldRight(empty) (_ +: _)
該文件將永遠不會很大,所以可擴展性不是問題。上面的代碼似乎有效,但我覺得它在穀倉周圍。有沒有更簡單,更直接的方法來做到這一點?
作爲一個方面說明:是否有一個特殊的原因,你需要一個'Vector'?在Scala中,只有指定具有您需要的性能特徵的集合類型才更爲習慣 - 即,在這種情況下可能是'IndexedSeq' - 而不是實現。 –
@ Travis。我剛剛完成了Martin Odersky在Scala的Coursera課程,我正在嘗試擴展其中一項任務。該任務使用了Vector,所以我堅持使用它。不幸的是,該課程沒有文件I/O,所以我也試圖學習一些。 – saulspatz
謝謝大家誰回答。這些都比我想出來的更加簡潔。這會讓我花一點時間來圍繞他們中的一些人。我還沒有安裝Scala 2.10,但這個「to」方法看起來非常有吸引力。 – saulspatz