我在选项中存储了一个资源对象。
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
}
而不是使用
foreach
或flatMap
。我认为,此解决方案可以更清楚,更清楚地显示发生了什么。使用foreach
或flatMap
的解决方案需要额外的精力,您必须知道这些方法对Option
的作用。关于scala - 关闭存储在Option []中的资源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5586809/