4

smth のコレクションに対する「高度な反復」のためのスカラでの最適なスタイルは何ですか? その場合、for-comprehension を使用する必要があり、(スタイルの観点から) 反復の代替方法を探す必要がある場合。本Programming in Scalaには、次のように見える例があります。

for{
    file <- filesHere
    if file.getName.endsWith("txt")
    line <- Source.fromFile(file).getLines.toList
    if line.trim.matches(pattern)
  } println("|" + file + ": " + line.trim)

内部反復を使用して書き直そうとしましたが、次のようになりました。

filesHere foreach { file =>
  if (file.getName.endsWith("txt")) {
    Source.fromFile(file).getLines.toList foreach {line =>
      if (line.trim.matches(pattern)) println("|" + file + ": " + line.trim)
    }
  }
}   

ただし、Web(stackoverflowを含む)では、for-comprehensionの使用を説得する多くの記事/投稿を見つけましたが、それを使用するのは便利ではありません。私見、内部反復は非常に読みやすく便利です。

このトピックに関する最良のガイドラインは何ですか?

4

2 に答える 2

1

Scala では、for 内包表記が推奨されるアプローチになると思います。mapfor 内包表記は、実際にはandのシンタックス シュガーであることに注意してくださいfilter

于 2013-09-18T16:26:11.760 に答える