【问题标题】:Scala ifNotPresent concise formScala ifNotPresent 简洁形式
【发布时间】:2017-08-01 06:32:24
【问题描述】:

我有以下收藏:

private val commandChain: mutable.Buffer[mutable.Buffer[Long]] = ArrayBuffer()

我需要做以下事情:

def :->(command: Long) = {
  commandChain.headOption match {
    case Some(node) => node += command
    case None => commandChain += ArrayBuffer(command)
  }
}

还有比模式匹配更简洁的形式吗?

【问题讨论】:

    标签: scala collections option


    【解决方案1】:

    您可以使用简单的if...else 声明。没有模式匹配,也没有 Option 展开。

    def :->(command: Long): Unit = 
      if (commandChain.isEmpty) commandChain += ArrayBuffer(command)
      else                      commandChain.head += command
    

    顺便说一句,这比在大多数惯用(即“好”)Scala 中看到的更具可变性的数据结构和副作用。

    【讨论】:

    • 你的意思是这样更快?
    • 也许,但我认为您很难找到可衡量的性能差异。恕我直言,这只是稍微简洁一些,并提供了更多的可读性和目的性。
    猜你喜欢
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2023-03-30
    • 2022-12-30
    相关资源
    最近更新 更多