我在选项中存储了一个资源对象。

 private var ochan: Option[Channel] = None

在程序执行过程中的某个时候,ochan设置为Some(channel)。我想关闭通道(通过调用close方法),然后一次致命地将选项设置为None

目前我有:
 def disconnect = ochan = { ochan.foreach{_.close}; None }

以前我有:
 def disconnect = ochan = ochan.flatMap{ o => o.close; None }

有一个更好的方法吗?

最佳答案

我会这样写:

def disconnect = ochan = ochan match {
  case Some(ch) => ch.close(); None
  case None => None // do nothing
}

而不是使用foreachflatMap。我认为,此解决方案可以更清楚,更清楚地显示发生了什么。使用foreachflatMap的解决方案需要额外的精力,您必须知道这些方法对Option的作用。

关于scala - 关闭存储在Option []中的资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5586809/

10-11 12:49