在递归函数中,一步一步地携带结果以进行尾部调用优化通常是有效的。为了向用户表明他不需要提供参数,可以合理地将参数命名为“结果”:
def removeOccurence [A] (slice: Seq[A], original: Seq[A]) = {
@scala.annotation.tailrec
def remove (leftOriginal: Seq[A], result: Seq[A]) : Seq[A] =
trimStart (slice, leftOriginal) match {
case (h :: tail) => remove (tail, h +: result)
case (Nil) => result.reverse
}
remove (original, Nil)
}
但是我更经常使用“随身携带”和“远距离携带”,这是我在野外看到的,在大多数情况下,携带这种想法甚至更好。
当然,第二个原因是,如果您的主题建议使用“结果”一词,例如,如果您进行算术评估。您可以解析公式,将变量替换为值,最后计算结果。
已经说明了第三个原因,但我有一个小偏差:您编写了一个执行某些工作的方法,比如说它评估“ max”的形式。
def max = {
val result = somethingElseToDo
if (foo) result else default
}
我们可以将结果称为“ max”,而不是将结果称为“结果”,但是在某些语言中,您可以在调用方法时省略括号,因此max将是对方法本身的递归调用。
通常,我希望使用一个能说明结果的名称。但是,如果已经使用了该名称,则可能使用了多个变量,属性或方法,因为存在一个GUI字段,一个字符串表示形式,一个数字和一个用于数据库的名称,而使用另一个则增加了混淆的可能性。在3到7行的简短方法中,名称的“结果”应该不是问题。
ofTheJedi
用于此目的。不推荐,只是说我已经看过了。Zorglub ofTheJedi = //...; return ofTheJedi;