Схема именования вспомогательных функций в Scala - PullRequest
7 голосов
/ 12 сентября 2011

В Haskell, когда мне нужна быстрая рабочая функция или вспомогательное значение, я обычно использую простое число ('), которое широко используется в математике.Например, если бы я написал функцию reverse и нуждался в хвостовом рекурсивном работнике, я бы назвал ее reverse'.

В Scala имена функций не могут содержать '.Существует ли в Scala общепринятая схема именования вспомогательных функций и значений?

Ответы [ 2 ]

13 голосов
/ 12 сентября 2011

Почему бы вам не объявить метод внутри метода, который его использует? Тогда вы можете просто назвать это «помощником» или как угодно, не беспокоясь о конфликтах имен.

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)
6 голосов
/ 12 сентября 2011

Если я хорошо помню курс Мартина Одерского по программированию, который я проходил в 2004 году, я думаю, что он использовал суффикс 0 для вспомогательных функций, определенных в теле основной функции.

def reverse(...) = {
  def reverse0(...) = {
    // ...
  }
  reverse0(...)
}
...