【发布时间】:2011-12-24 14:59:48
【问题描述】:
将 MxN 矩阵(M 行,N 列)写入 CSV 文件:
我的第一次尝试是使用 map,但是创建了 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
}
我的第二次尝试,使用 reduce,也有效,但看起来很笨重:
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
}
对更简洁和惯用的方法有什么建议吗?谢谢。
【问题讨论】:
-
如何获得第二次编译尝试?在
sbuf.append(b)中,范围内没有b。
标签: scala csv map matrix reduce