Scala中辅助函数的命名方案

时间:2011-09-12 11:53:47

标签: scala haskell naming-conventions

在Haskell中,当我需要快速工作函数或辅助值时,我通常使用广泛用于数学的素数(')。例如,如果我要写一个reverse函数并需要一个尾递归工作者,我会将其命名为reverse'

在Scala中,函数名称不能包含'。在Scala中是否有任何通用的辅助函数和值的命名方案?

2 个答案:

答案 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(...)
}