【发布时间】:2016-12-15 06:20:12
【问题描述】:
在 Scala 中编写以下代码的最佳方式是什么?它看起来不太对我 - 首先是 2 个 val 的前向声明,然后是长的 PrintWriter 创建行,然后是 finallyblock。唯一惯用的就是 catch 块...
val outputStream = Try(fs.create(tmpFile))
val writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(outputStream.get)))
if (outputStream.isFailure) {
logger.error(s"Couldn't open file: $tmpFile")
}
try {
features.foreach {
case (sectionName, modelRDD) =>
writer.append("{" + sectionName + ", " + modelRDD.getNumPartitions + "}")
}
} catch {
case e: Exception =>
logger.error(s"Got exception", e)
throw e
} finally {
outputStream.get.close()
writer.close()
}
【问题讨论】:
-
在什么基础上他们不“看起来很合适”?
-
我是 Scala 新手。也许这没问题,但正如我所提到的,我希望有一些更简单的东西:2 vals 声明、编写器创建行和
finally块。也许我可以学习一些更惯用的东西?
标签: scala