0

問題があります: scala にこのようなリスト (List("Entry1", "Entry2", "Entry3")) があり、このリストを機能的に出力したいと考えています。だから私はどんな種類のループも使いたくありません。

ある種のこのコードを使用して可能であることを知っています:

def test(input:List[_])
input match
{
case //and what now?
case _ => //recursion I guess?

}

このメソッドを使用して、新しい行のすべての要素でこのリストを印刷したいと思います。

誰か助けてくれませんか?

ありがとう!

4

3 に答える 3

8

標準的な方法は次のとおりです。

val xs = List("Entry1", "Entry2", "Entry3")
xs.foreach(println)

または、インデックスが必要な場合は、次のようにします。

xs.zipWithIndex.foreach { case (x,i) => println(i + ": " + x) }

しかし、あなたの質問から、これは再帰関数を書くための演習であると理解しています。したがって、組み込みの方法を知っていても、実際には役に立ちません。

foreachしたがって、組み込みメソッドを使用せずに再帰的に自分で実行したい場合は、次のようにしてください。

@tailrec
def printList[T](list: List[T]) {
  list match {
    case head :: tail =>
      println(head)
      printList(tail)
    case Nil =>
  }
}

printList(List("Entry1", "Entry2", "Entry3"))

更新: リスト インデックスを持つことについてのコメントについては、これを試してください。

def printList[T](list: List[T]) {
  @tailrec
  def inner(list: List[T], i: Int) {
    list match {
      case head :: tail =>
        println(i + ": " + head)
        inner(tail, i + 1)
      case Nil =>
    }
  }
  inner(list, 0)
}
于 2012-09-23T17:38:27.637 に答える
1

リストAPIを使用した別のソリューション:

List("Entry1", "Entry2", "Entry3").zipWithIndex.foreach(t => println(t._2 + ":" + t._1))
于 2012-09-23T18:35:19.810 に答える
0

List("LALA", "PEPE", "JOJO").map(println)

于 2012-09-23T21:14:22.167 に答える