匹配基于列表长度的模式匹配

时间:2013-08-17 15:08:48

标签: scala idiomatic

这里recentest是一个列表,我希望在其“配置文件”上匹配:要么是空的,要么只是一个元素。我可以在匹配声明中原生地使用它吗?

val newId = if( recentest.size == 0) 0L
    else {recentest(0).as[Long]("item_id") + 1}

2 个答案:

答案 0 :(得分:4)

如果你想在几种情况下匹配任意大小,你可以这样做:

list match {
  ...
  case _ if list.length == mySize => ...
  ...
}

答案 1 :(得分:3)

val newId = recentest match {
   case Nil    => 0
   case h::Nil => h.as[Long]("item_id") + 1
}