我正在使用scala-arm库来自动释放/关闭资源(例如InputStream
)。
但问题是以下代码会返回ExtractableManagedResource[Int]
,而不仅仅是Int
。
val result = for(responseStream <- managed(response.getResponseBodyAsStream)) yield {
val localResult: Int = 1
localResult
}
// result is of type ExtractableManagedResource[Int]
是否有任何选项可以返回Int
并克服包装结果到ExtractableManagedResource
?
result
变量称为var
并从for-comprehension
内部分配给它,但我想要更多scala-idiomatic方式,即不使用{ {1}}
答案 0 :(得分:2)
通过使用aquireAndGet功能
,使用monadic方法更容易实现managed(response.getResponseBodyAsStream) acquireAndGet {
responseStream =>
val localResult: Int = 1
localResult
}
答案 1 :(得分:1)
来自文档:
result.opt.get
有关详细信息,请参阅标题为&#34; Monadic style&#34;的链接。