斯卡拉臂。返回类型

时间:2015-06-11 18:07:33

标签: scala scala-arm

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

2 个答案:

答案 0 :(得分:2)

通过使用aquireAndGet功能

,使用monadic方法更容易实现
managed(response.getResponseBodyAsStream) acquireAndGet { 
responseStream =>
    val localResult: Int = 1
    localResult
}

答案 1 :(得分:1)

来自文档:

result.opt.get

有关详细信息,请参阅标题为&#34; Monadic style&#34;的链接。