【问题标题】:Pattern matching or Map Monads模式匹配或 Map Monad
【发布时间】:2021-09-19 16:11:00
【问题描述】:

我想知道你们认为在性能方面更惯用和更好的是什么。

在 Option 或 Try 类型的 monad 上,使用模式匹配或 map 和 getOrElse 以防您想控制副作用。

那么你觉得这个更好:

maybeConnectTimeout
  .map(connectTimeout => session.connect(connectTimeout))
  .getOrElse(session.connect())

或者这个

maybeConnectTimeout match {
  case Some(connectTimeout) => session.connect(connectTimeout)
  case None => session.connect()
}

【问题讨论】:

  • 您可以使用foldmapgetOrElse 混合在一起 - 一般来说,建议首选HoF 而不是模式匹配。
  • 谢谢我完全忘记了折叠,而且非常优雅。谢谢大佬!
  • @LuisMiguelMejíaSuárez 你能把它写成答案吗?
  • @James 我的意思是,这个问题应该被关闭,因为无论如何都是基于意见的。

标签: scala


【解决方案1】:

什么...在性能方面...更好。

根据odersky模式匹配

我很惊讶模式匹配在这里得到这么少的爱。它不仅是迄今为止最快的(可能至少是替代方案的 10 倍),而且也是最清晰的。

【讨论】:

    猜你喜欢
    • 2017-06-23
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多