Каков наилучший способ написать следующее в Scala? Это не выглядит совершенно правильно для меня - сначала передняя декларация 2 вал, затем длинная линия создания PrintWriter
, затем блок finally
. Единственное, что это идиоматическое, является catch
блок ...Самый идиоматический способ написать try/catch/наконец-то в Scala?
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()
}
На каком основании они «выглядят совершенно правильно» для вас? – YoungSpice
Я новичок в Scala. Может быть, все в порядке, но я надеялся на что-то более простое, как я уже упоминал: объявления 2 вал, строка создания писателя и блок '' 'finally''. Может быть, есть что-то более идиоматическое, что я мог бы узнать? – Frank
С управлением ресурсами: http://jsuereth.com/scala-arm/usage.html – cchantep