sau đây hai mã tạo ra kết quả khác nhau:"trở lại" và "try-catch-cuối cùng" đánh giá khối trong scala
def x = try{
true
} finally false
invoke x được true
def y:Boolean = try{
return true
} finally {
return false
}
gọi y được false
phiên bản return
hoạt động giống như Java.
Cá nhân tôi không bao giờ sử dụng 'trả lại' trong scala. Nhưng thật tốt khi biết cách scala đánh giá giá trị của một khối try-catch-finally. Cảm ơn.
Nhưng "lợi nhuận tiềm ẩn" là gì? – xiefei
"Trả về tiềm ẩn": Có thể là từ sai, nhưng ý tôi là Scala sử dụng kết quả của dòng cuối cùng trong khối mã làm giá trị trả về cho khối. – Thilo
Thilo là đúng. Đặt câu lệnh 'return' trong một khối' cuối cùng' sẽ được coi là một sai lầm và thực sự không được phép. 'Cuối cùng' là để làm sạch công cụ không có vấn đề cho dù cơ thể phương pháp thành công hoặc ném một ngoại lệ. Nó không phải là nơi để quyết định một giá trị trả lại! Do đó, phần thân của mệnh đề 'finally' được lấy để đánh giá' Đơn vị'. Trong ví dụ đầu tiên của bạn, 'false' được chuyển đổi hoàn toàn thành' Đơn vị'. –