我正在嘗試編寫一個簡單的幫助程序方法,該方法接收可以關閉的內容以及接收前者的某些函數,並確保在執行該函數後關閉「可關閉」。爲什麼這種結構類型綁定不能按預期工作?
例如,我想用這樣的:
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`顯然不能接受一個字符串。在字符串上調用`getBytes()`。 – Malvolio 2011-01-24 22:49:23