6

foreachループの行を読み取る関数は、CSVのような構造化テキストファイルのキーで値を検索します。特定の行が見つかった後、そこに何かを探して行を読み続けるのは無意味です。Scalaにはbreakステートメントがないので停止するにはどうすればよいですか?

4

3 に答える 3

9

Scala のSourceクラスはレイジーです。takeWhileまたはを使用して文字または行を読み取ることができdropWhile、入力に対する反復を必要以上に進める必要はありません。

于 2010-08-31T04:31:44.290 に答える
6

ランドールの答えを拡張するには。たとえば、キーが最初の列にある場合:

val src = Source.fromFile("/etc/passwd")
val iter = src.getLines().map(_.split(":"))
// print the uid for Guest
iter.find(_(0) == "Guest") foreach (a => println(a(2)))
// the rest of iter is not processed
src.close()
于 2010-08-31T06:46:32.783 に答える
2

以前の回答では、ファイルから行を読み取りたいと想定していましたが、必要に応じて for ループを中断する方法が必要であると想定しています。これが解決策 です。次のようにできます:

breakable {
   for (...) {
     if (...) break
   }
 }
于 2010-08-31T09:38:19.203 に答える