我想知道如何以最佳功能方式使用Queue.例如,我想将元素出列并使用递归函数打印它们.我想要最美丽的功能.
例如,这是一个按我想要的功能.但我不喜欢if.
他们是更好的使用队列的方法吗?
import scala.collection.immutable.Queue
def printQ[A](p:Queue[A]) {
if(!p.isEmpty) {
p.dequeue match {
case (x,xs) =>
println(x.toString)
printQ(xs)
case _ =>
println("End")
}
}
}
printQ(Queue(1,2,4,5))
Run Code Online (Sandbox Code Playgroud)
谢谢你的回复.
Queue没有一个dequeueOption方法,这会让它变得更好一些。但是,请注意,您的比赛中的第一个条目是详尽无遗的;你永远无法到达println("End")代码。所以你可以改进你的版本:
def printQ[A](p: Queue[A]) {
if (!p.isEmpty) p.dequeue match {
case (x,xs) =>
println(x.toString)
printQ(xs)
}
}
Run Code Online (Sandbox Code Playgroud)
当然,由于这只是按顺序遍历队列,因此人们总是可以
p.foreach(println)
Run Code Online (Sandbox Code Playgroud)
打印所有内容。