打印列表功能使用scala

koe*_*eee 0 printing recursion functional-programming scala list

我有一个问题:我在scala中有一个列表(List("Entry1","Entry2","Entry3")),我想打印此列表功能.所以我不想使用任何类型的循环.

我知道可以使用某种代码:

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

}
Run Code Online (Sandbox Code Playgroud)

我想使用此方法打印此列表,新行上的每个元素.

有人可以帮帮我吗?

谢谢!

dhg*_*dhg 8

标准方式是:

val xs = List("Entry1", "Entry2", "Entry3")
xs.foreach(println)
Run Code Online (Sandbox Code Playgroud)

或者,如果你想要索引:

xs.zipWithIndex.foreach { case (x,i) => println(i + ": " + x) }
Run Code Online (Sandbox Code Playgroud)

但是我从你的问题中得知这是一个编写递归函数的练习,因此了解内置方法并不能真正帮助你.

所以,如果你想自己做,递归,没有内置的foreach方法,试试这个:

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

printList(List("Entry1", "Entry2", "Entry3"))
Run Code Online (Sandbox Code Playgroud)

更新:关于你对列表索引的评论,试试这个:

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)
}
Run Code Online (Sandbox Code Playgroud)