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)
我想使用此方法打印此列表,新行上的每个元素.
有人可以帮帮我吗?
谢谢!
标准方式是:
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)
| 归档时间: |
|
| 查看次数: |
5561 次 |
| 最近记录: |