20

Scalaで特定の値より大きい(または小さい)または等しいサイズのリストに一致するパターンを指定する方法はありますか?

たとえば、サイズが 3 以下のすべてのリストに同じアクションを適用する場合:

list match {
    case Nil => op(list) 
    case x :: Nil => op(list)
    case x :: y :: Nil => op(list)
    case x :: y :: z :: Nil => op(list)
    case x :: tail => other(list)
} 

これを2つのケースに減らす方法はありますか?

4

4 に答える 4

6

単純な古い if / else の何が問題になっていますか??

if (list.length >= minimumLength)
  longer(list)
else
  shorter(list)
于 2013-04-17T03:14:25.023 に答える
4

次の方法でも実行できます。

list.splitAt(len) match {
   case (xs, Nil) => other(xs)
   case (_, _) => op(list)
}

O(len)リストが長い場合でもその複雑さは、len決定的な要因です。

上記の呼び出しopif list.size < lenelse 呼び出しother

于 2013-04-17T06:41:18.307 に答える