0

我正在使用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

编辑:我知道我可以 declreresult变量 asvar并从内部分配给它for-comprehension,但我想要更多的 scala 惯用方式,即不使用var

4

2 回答 2

2

通过使用 aquireAndGet 功能,这更容易使用 monadic 方法实现

managed(response.getResponseBodyAsStream) acquireAndGet { 
responseStream =>
    val localResult: Int = 1
    localResult
}
于 2016-04-25T19:40:03.427 回答
1

从文档中:

result.opt.get

有关更多详细信息,请参阅标题为“Monadic 样式”下的您自己的链接。

于 2015-06-11T18:43:49.247 回答