Listのappend
再帰の(略
ちょうどコップ本に載ってたので、変数名以外コップ本に書いてあるまま。
//Scala def append[T](lst1: List[T], lst2: List[T]):List[T]= lst1 match{ case List() => lst2 case head :: tail => head :: append(tail,lst2) } println(append(List(1,2,3),List(4,5,6))) //=>List(1,2,3,4,5,6)
上記のようにパターンマッチ使うと、head,tailとか使わなくてもリスト分解出来ると。けど、慣れてないからまずはこう書きたくなるなあ。
//Scala def append[T](lst1: List[T], lst2: List[T]):List[T]={ if (lst1.isEmpty) lst2 else lst1.head :: append(lst1.tail,lst2) } //あるいは def append[T](lst1: List[T], lst2: List[T]):List[T]= lst1 match { case List() => lst2 case List(_*) => lst1.head :: append(lst1.tail,lst2) } println(append(List(1,2,3),List(4,5,6))) //=>List(1,2,3,4,5,6)