implicit val odkaz = head;
def vypis(implicit odkaz:Prvek):String = {
odkaz match{
case null => ""
case e => e.cislo + " " + e.pocet + "\n" + vypis(e.dalsi)
}
}
...
def main(args:Array[String]){
val q = new MyQueue() // insert some values
println(q.vypis)
}
此方法(vypis)是队列类的成员,因此我总是希望从外部调用方法时从队列的开头开始递归。有没有办法如何编写它,来自外部调用的方法,没有参数,但在内部,有一个参数 - 用于递归...? 编译器抱怨从外部调用时未定义参数
或者有没有办法如何指定方法参数的默认值?
答案 0 :(得分:0)
在Scala 2.8中,可以使用默认方法(和构造函数)参数:
def m1(i: Int = 23): Int = i * 2
答案 1 :(得分:0)
def sum(list: List[Int]) = {
@annotation.tailrec
def sum(ls: List[Int], s: Int): Int = ls match {
case x :: xs => sum(xs, x + s)
case _ => s
}
sum(list, 0)
}
@annotation.tailrec
def sum(list: List[Int], s: Int = 0): Int = list match {
case x :: xs => sum(xs, x + s)
case _ => s
}
第二种方法(仅适用于Scala 2.8)不必要地扩展了公共API,因此我建议使用第一种方法。