Trong một hàm đệ quy, thường có hiệu quả để mang kết quả từ bước này sang bước khác, để thực hiện tối ưu hóa cuộc gọi đuôi. Để báo hiệu cho người dùng, rằng anh ta không cần cung cấp một tham số, có thể hợp lý khi đặt tên cho một tham số là "kết quả":
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)
}
Nhưng thường xuyên hơn, tôi sử dụng 'carry' và 'sofar', thứ mà tôi đã thấy trong tự nhiên, và nó mang ý tưởng thậm chí tốt hơn một chút, trong hầu hết các trường hợp.
Tất nhiên, lý do thứ hai là, nếu chủ đề của bạn đề xuất từ '' kết quả '', ví dụ nếu bạn thực hiện đánh giá số học. Bạn có thể phân tích công thức, thay thế các biến bằng các giá trị và tính kết quả cuối cùng.
Một lý do thứ ba đã được nêu, nhưng tôi có một sai lệch nhỏ: Bạn viết một phương thức thực hiện một số công việc, giả sử nó đánh giá một dạng '' tối đa ''.
def max = {
val result = somethingElseToDo
if (foo) result else default
}
Thay vì gọi kết quả là '' kết quả '', chúng ta có thể gọi nó là '' max '', nhưng trong một số ngôn ngữ, bạn có thể bỏ qua dấu ngoặc đơn khi gọi một phương thức, do đó max sẽ là một cuộc gọi đệ quy cho chính phương thức đó.
Nói chung, tôi thích một cái tên cho biết, kết quả là gì. Nhưng nếu tên đó đã được sử dụng, có thể bởi nhiều hơn một biến, thuộc tính hoặc phương thức, bởi vì có trường GUI, biểu diễn chuỗi, số và một cho cơ sở dữ liệu, sử dụng một biến khác làm tăng xác suất nhầm lẫn. Trong các phương pháp ngắn từ 3 đến 7 dòng, '' kết quả '' không phải là vấn đề đối với tên.
ofTheJedi
được sử dụng cho mục đích đó. Không phải là một đề nghị, chỉ nói rằng tôi đã nhìn thấy nó.Zorglub ofTheJedi = //...; return ofTheJedi;