2013-08-17 115 views
2

這裏recentest是一個列表,我想匹配其「配置文件」:空的或只是一個元素。我可以在比賽聲明中原生做到嗎?基於列表長度的匹配模式匹配

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

注意'recentest.headOption.fold(0L,_.as [龍]( 「item_id」)+ 1)''''或'recentest.headOption.map(_。as [Long](「item_id」)+ 1).getOrElse(0L)'''''''''''''' –

回答

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

你可以概括爲2(或更多)? – aitchnyu

+0

@aitchnyu'... case無=> 0; case xs => xs.map(x => x.as [Long](「...」))。sum + 1'如果我正確地得到它。也許你只需要映射步驟或類似的邏輯。 –

3

如果你想在幾個案件任意大小,你可以這樣做匹配:

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