再帰関数では、多くの場合、結果をステップごとに運び、末尾呼び出しの最適化を行うことが効果的です。ユーザーにパラメーターを提供する必要がないことを知らせるには、パラメーターに「result」という名前を付けるのが妥当です。
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)
}
しかし、多くの場合、「キャリー」と「これまで」を使用します。これらは、ほとんどの場合、野外で見たものであり、アイディアが少し良くなっています。
もちろん、2番目の理由は、算術評価を行う場合など、トピックが「結果」という単語を示唆している場合です。数式を解析し、変数を値に置き換え、最終的に結果を計算します。
3番目の理由はすでに述べましたが、私は少し逸脱しています:何らかの仕事を実行するメソッドを記述します。たとえば、 '' max ''の形式を評価するとしましょう。
def max = {
val result = somethingElseToDo
if (foo) result else default
}
結果 '' result ''を呼び出す代わりに、 '' max ''と呼ぶこともできますが、一部の言語ではメソッドを呼び出すときに括弧を省略できるため、maxはメソッド自体の再帰呼び出しになります。
一般的に、結果が何であるかを示す名前を好むでしょう。ただし、GUIフィールド、文字列表現、数値、データベース用の1つがあるため、別の名前を使用すると、混乱の可能性が高くなります。3から7行の短い方法では、「結果」は名前の問題ではないはずです。
ofTheJedi
その目的で使用されているのを見ました。私はそれを見たと言って、お勧めではありません。Zorglub ofTheJedi = //...; return ofTheJedi;