Как мне избежать дублирования условия if
в моем коде:
def download() =
Action {
val out = new FileWriter("/tmp/foo.txt")
Try {
val chars = new Array[Char](1024)
util.Arrays.fill(chars, '.')
chars(1024) = '\n'
out.write(chars)
} match {
case Failure(_) =>
if (out != null) out.close()
println("failed")
case Success(_) =>
if (out != null) out.close()
println("success")
}
}
Я попытался адаптироваться из следующего:
def download() =
Action {
Try {
val out = new FileWriter("/tmp/foo.txt")
try{
val chars = new Array[Char](1024)
util.Arrays.fill(chars, '.')
chars(1024) = '\n'
out.write(chars)
} if (out != null) out.close()
} match {
case Failure(_) =>
println("failed")
case Success(_) =>
println("success")
}
}
Но так у меня есть Java try
внутри Scala Try
, что кажется неправильным. Как мне избежать двух блоков попыток? В основном я просто хочу, чтобы ресурс, который я приобрел, был очищен после завершения выполнения метода.