gpt4 book ai didi

scala - 关闭存储在 Option[ ] 中的资源

转载 作者:行者123 更新时间:2023-12-02 06:23:16 26 4
gpt4 key购买 nike

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

 private var ochan: Option[Channel] = None

在程序执行期间的某个时刻,ochan 被设置为 Some(channel)。我想关闭 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com