如何使用新的Try
API将以下Java代码翻译为Scala?我怎样才能表达*最后*相当于斯卡拉的尝试?
public byte[] deflate(byte[] data) {
ByteArrayOutputStream outputStream = null;
GZIPOutputStream gzipOutputStream = null;
try {
outputStream = new ByteArrayOutputStream();
gzipOutputStream = new GZIPOutputStream(outputStream);
gzipOutputStream.write(data);
return outputStream.toByteArray();
catch (Exception e) {
...
} finally {
if (gzipOutputStream != null) gzipOutputStream.close();
}
}
斯卡拉版本应该是这样的......
def deflate(data Array[Byte]): Try[Array[Byte]] = Try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream()
new GZIPOutputStream(outputStream).write(data)
outputStream.toByteArray
}
......但我要如何实现Java的finally
等同?
[数据压缩的可能重复在斯卡拉](http://stackoverflow.com/questions/20614343/data-compression-in-scala) –
你应该使用scala-arm。 http://stackoverflow.com/questions/5149009/functional-try-catch-w-scala – tmbo