Listのmember

再帰のべんきょ

//Scala
def member[T](item: T, lst: List[T]): List[T]={ 
  if (lst.isEmpty) Nil
  else {
    if (item == lst.head) lst
    else member(item, lst.tail)
  }
}
println(member("Scala",List("Ruby","Perl","Python","Scala","Groovy","Java")))
//=> List("Scala","Groovy","Java")

パターンマッチで。

//Scala
def member[T](item: T, lst: List[T]): List[T]= lst match{
  case List() => Nil 
  case head :: tail =>
    if (item == head) lst 
    else member(item, tail)
  }
println(member("Scala",List("Ruby","Perl","Python","Scala","Groovy","Java")))
//=> List("Scala","Groovy","Java")