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