Dalam fungsi rekursif, seringkali efektif untuk membawa hasil dari langkah ke langkah, untuk membuat optimasi panggilan ekor. Untuk memberi tanda kepada pengguna, bahwa ia tidak perlu memberikan parameter, masuk akal untuk memberi nama parameter "hasil":
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)
}
Tetapi lebih sering saya menggunakan 'carry' dan 'sofar', yang saya lihat di alam liar, dan yang membawa ide itu sedikit lebih baik, dalam banyak kasus.
Alasan kedua tentu saja, jika topik Anda menyarankan kata '' hasil '', misalnya jika Anda melakukan evaluasi aritmatika. Anda bisa menguraikan rumus, mengganti variabel dengan nilai, dan menghitung hasilnya pada akhirnya.
Alasan ketiga telah dinyatakan, tetapi saya memiliki sedikit penyimpangan: Anda menulis metode yang melakukan beberapa pekerjaan, katakanlah itu mengevaluasi bentuk '' maks ''.
def max = {
val result = somethingElseToDo
if (foo) result else default
}
Alih-alih memanggil hasil '' hasil '', kita bisa menyebutnya '' maks '', tetapi dalam beberapa bahasa Anda dapat menghilangkan tanda kurung saat memanggil metode, jadi max akan menjadi panggilan rekursif ke metode itu sendiri.
Secara umum, saya lebih suka nama yang memberitahu, apa hasilnya. Tetapi jika nama itu sudah diambil, mungkin oleh lebih dari satu variabel, atribut atau metode, karena ada bidang GUI, representasi string, numerik dan satu untuk database, menggunakan yang lain meningkatkan kemungkinan kebingungan. Dalam metode pendek 3 sampai 7 baris, '' hasil '' seharusnya tidak menjadi masalah untuk sebuah nama.
ofTheJedi
digunakan untuk tujuan itu. Bukan rekomendasi, hanya mengatakan saya sudah melihatnya.Zorglub ofTheJedi = //...; return ofTheJedi;