【问题标题】:scala-arm. Return type标量臂。返回类型
【发布时间】:2015-06-11 18:07:32
【问题描述】:

我正在使用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 惯用方式,即不使用 var

【问题讨论】:

    标签: scala scala-arm


    【解决方案1】:

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

    managed(response.getResponseBodyAsStream) acquireAndGet { 
    responseStream =>
        val localResult: Int = 1
        localResult
    }
    

    【讨论】:

      【解决方案2】:

      来自文档:

      result.opt.get
      

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

      【讨论】:

      • 为了更简洁,您可以使用“acquireAndGet”语法
      猜你喜欢
      • 2013-10-13
      • 1970-01-01
      • 2014-12-16
      • 2014-12-17
      • 2023-01-29
      • 2015-12-08
      • 1970-01-01
      • 2017-06-01
      • 2014-05-30
      相关资源
      最近更新 更多