以下のプレビューを確認して、よければページ下部のボタンで更新してください。

問15

List.make(n, _)をつかって要素を増やした記述

 def drop[T](n: Int, l: List[T]): List[T] = {
   def dropR(c: Int, curList: List[T]): List[T] = (c, curList) match {
     case (_, Nil) => Nil
     case (1, _ :: tail) => dropR(n, tail)
     case (_, e :: tail) => e :: dropR(c - 1, tail)
   }
   dropR(n, l)
 }

回答をみて気がつくのは、defの定義方法である。通常{}でくくるかとおもうが、 いきなり( )表現をつかっている。一つの配列からつくられる高階関数内に処理を書けるからだとおもう。

case文の使い方で気がつくことは、eとtailである、この2つは、どこにも定義や代入の記述がないことをみると、予約されている変数だろう。パターンマッチの書き方も()に応じて用意してあるのだろう。たしか()はTuple2だったはずだ。


タイムスタンプを変更しない
トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS