2017-08-01 182 views
0

我有以下的集合:斯卡拉ifNotPresent简洁的形式

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) 
    } 
} 

是否有这种更简洁的形式比模式匹配?

回答

1

你可以用一个简单的if ... else声明去。没有图案匹配,也没有Option展开。

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

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

+0

您的意思是这个速度更快? –

+0

也许,但我认为你会很难找到可衡量的性能差异。这只是稍微简洁一些,并提供更多的可读性和清晰度的目的,恕我直言。 – jwvh