私は、閉じられることができるものを受け取る単純なヘルパーメソッドと、前者を受け取り、関数を実行した後に「閉じる」が閉じられることを保証する関数を書くことを試みています。この構造タイプのバインドが期待どおりに機能しないのはなぜですか?
例えば、私はこのようにそれを使用したい:
closing(new FileOutputStream("/asda"))(_.write("asas"))
マイIMPLが
object Helpers {
def closing[T <: { def close }](closeable: T)(action: T => Unit): Unit =
try action apply closeable finally closeable close
}
しかし、この単純なテストコンパイルしようとしている。
object Test {
import Helpers._
closing(new FileOutputStream("/asda"))(_.write("asas"))
}
コンパイラを文句を言う:
推測された型引数 [java.io.FileOutputStreamは] は、メソッド閉鎖のタイプ パラメータの境界に準拠していない[T <:AnyRef {defの 近い:ユニット}]
任意のアイデアなぜですか?
そして、 'FileOutputStream.write'は明らかにStringを取ることができません。 String上で 'getBytes()'を呼び出します。 – Malvolio