Một return
có thể thực hiện bằng cách ném một ngoại lệ, vì vậy nó có thể có một overhead nhất định so với cách tiêu chuẩn của tuyên bố kết quả của một phương pháp. (Cảm ơn Kim Stebel vì đã chỉ ra điều này không phải luôn luôn, có lẽ thậm chí không thường xuyên như vậy.)
Ngoài ra, return
khi đóng cửa sẽ được trả về trong đó đóng cửa được xác định và không đơn giản từ chính nó. Điều đó làm cho nó vừa hữu ích cho điều đó, và vô ích khi trả lại kết quả từ việc đóng cửa.
Một ví dụ ở trên:
def find[T](seq: Seq[T], predicate: T => Boolean): Option[T] = {
seq foreach { elem =>
if (predicate(elem)) return Some(elem) // returns from find
}
None
}
Nếu bạn vẫn không hiểu, elem => if (predicate(elem)) return Some(elem)
là phương pháp apply
của một đối tượng ẩn danh của mà thực hiện Function1
và được truyền cho foreach
như tham số. Xóa return
khỏi nó và nó sẽ không hoạt động.
Nguồn
2012-09-09 01:01:10
đây là bài đăng trên blog có liên quan trên [return] (https://tpolecat.github.io/2014/05/09/return.html) – BlueSky