在Haskell中,当我需要快速工作函数或辅助值时,我通常使用广泛用于数学的素数('
)。例如,如果我要写一个reverse
函数并需要一个尾递归工作者,我会将其命名为reverse'
。
在Scala中,函数名称不能包含'
。在Scala中是否有任何通用的辅助函数和值的命名方案?
答案 0 :(得分:13)
为什么不在使用它的方法中声明方法?然后,您可以将其称为“帮助者”或任何您喜欢的,而不必担心名称冲突。
scala> def reverse[A](l:List[A]) = {
| def helper(acc:List[A],rest:List[A]):List[A] = rest match {
| case Nil => acc
| case x::xs => helper(x::acc, xs)
| }
| helper(Nil, l)
| }
reverse: [A](l: List[A])List[A]
scala> reverse(1::2::3::Nil)
res0: List[Int] = List(3, 2, 1)
答案 1 :(得分:6)
如果我记得2004年我接受过Martin Odersky的编程课程,我认为他使用0
后缀作为辅助函数 - 在主函数体内定义。
def reverse(...) = {
def reverse0(...) = {
// ...
}
reverse0(...)
}