ここでは、1行に1つずつ値リストを含むファイルを読み込むためのサンプルプログラムを示します。これらの値をすべて二重に変換して追加し、値をソートする必要があります。ここまで私がこれまでにやってきたことはうまくいきます。Scalaファイルを2回読むのを避ける方法
import scala.io.Source
object Expense{
def main(args: Array[String]): Unit = {
val lines = Source.fromFile("c://exp.txt").getLines()
val sum: Double = lines.foldLeft(0.0)((i, s) => i + s.replaceAll(",","").toDouble)
println("Total => " + sum)
println((Source.fromFile("c://exp.txt").getLines() map (_.replaceAll(",", "").toDouble)).toList.sorted)
}
}
ここでの質問は、私がファイルを2回読んでいるので、それを避けたいと思っています。 Source.fromFile("c://exp.txt").getLines()
はイテレータを提供するので、ループを1回だけ実行し、次の操作はnullになるため、再度ソートするためにlines
を再利用することはできず、再度ファイルから読み込む必要があります。また、私はそれらを一時的なリストに保存したくありません。機能的な方法でこれを行うエレガントな方法はありますか?
を次のように書き換えます既に暗黙のリストを作成しているので、あなたはそれを使いたいのですが?また、一度置き換えたマップを実行してから、そのリストの後続作業を行うことも考えられます。それ以外の場合は、replaceAll関数もすべて2回実行しています。 – Mikezx6r