我有一个问题:我在 scala 中有一个像这样的列表 (List("Entry1", "Entry2", "Entry3")) 并且我想打印这个列表功能。所以我不想使用任何类型的循环。
我知道可以使用某种代码:
def test(input:List[_])
input match
{
case //and what now?
case _ => //recursion I guess?
}
我想使用这种方法打印这个列表,每个元素都换行。
有人可以帮我吗?
谢谢!
我有一个问题:我在 scala 中有一个像这样的列表 (List("Entry1", "Entry2", "Entry3")) 并且我想打印这个列表功能。所以我不想使用任何类型的循环。
我知道可以使用某种代码:
def test(input:List[_])
input match
{
case //and what now?
case _ => //recursion I guess?
}
我想使用这种方法打印这个列表,每个元素都换行。
有人可以帮我吗?
谢谢!
标准方法是:
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)
}
使用列表 API 的另一个解决方案:
List("Entry1", "Entry2", "Entry3").zipWithIndex.foreach(t => println(t._2 + ":" + t._1))
List("LALA", "PEPE", "JOJO").map(println)