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 回答