エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
Listを扱うプログラムを書く時に、match式で::を使ってheadとtailを取り出すことが良くあると思う。 例... Listを扱うプログラムを書く時に、match式で::を使ってheadとtailを取り出すことが良くあると思う。 例えば、「二つのList a, bがあり、bがaに前方一致するならaからbを取り除いた残りを戻す」というような処理をmatchを使って書くと*1、こんな風になるかと思う。 def dropWith[A](a: List[A], b: List[A]): Option[List[A]] = { (a, b) match { case (_, Nil) => Some(a) case (Nil, _) => None case (h1 :: _, h2 :: _) if h1 != h2 => None case (h1 :: t1, h2 :: t2) => dropWith(t1, t2) } } scala> dropWith(List(1, 2, 3, 4, 5), Lis