自動的にリリースされるscala-arm
ように、以下のコードでどのように使用できますか?inputStream
def inflate(data: Array[Byte]): Array[Byte] = {
val inputStream = new InflaterInputStream(new ByteArrayInputStream(data), new Inflater)
Stream.continually(inputStream.read).takeWhile(-1 !=).map(_.toByte).toArray
}
私はこのようなことを試しました...しかし、もちろんメソッドtoArray
はのメンバーではない ため、最後のステートメントは失敗しますresource.ExtractableManagedResource
:
def inflate(data: Array[Byte]): Array[Byte] = {
val outputStream = for {
inputStream <- managed(new InflaterInputStream(new ByteArrayInputStream(data), new Inflater))
} yield Stream.continually(inputStream.read).takeWhile(-1 !=).map(_.toByte)
outputStream.toArray
}
scala-arm
出力ストリームを管理するために使用する方法の実例を次に示します。
def deflate(data: Array[Byte]) = {
val outputStream = new ByteArrayOutputStream
for (deflaterOutputStream <- managed(new DeflaterOutputStream(outputStream, new Deflater))) {
deflaterOutputStream.write(data)
}
outputStream.toByteArray
}
scala-arm
管理されたリソースおよび(または)を処理するための、より簡潔でスカラ指向の方法はありscalax.io
ますか?