Запись матрицы MxN (M строк, N столбцов) в файл CSV:
Моя первая попытка с использованием карты работает, но создает N ссылок на строковый буфер. В конце каждой строки также записывается ненужная запятая.
def matrix2csv(matrix:List[List[Double]], filename: String ) = {
val pw = new PrintWriter( filename )
val COMMA = ","
matrix.map( row => {
val sbuf = new StringBuffer
row.map( elt => sbuf.append( elt ).append( COMMA ))
pw.println(sbuf)
})
pw.flush
pw.close
}
Моя вторая попытка, использующая уменьшение, также работает, но выглядит неуклюже:
def matrix2csv(matrix:List[List[Double]], filename: String ) = {
val pw = new PrintWriter( filename )
val COMMA = ","
matrix.map( row => {
val sbuf = new StringBuffer
val last = row.reduce( (a,b)=> {
sbuf.append(a).append(COMMA)
b
})
sbuf.append(last)
pw.println(sbuf)
})
pw.flush
pw.close
}
Есть предложения о более кратком и идиоматическом подходе? Спасибо.