Phá vỡ và tiếp tục:
Trong một cuộc nói chuyện về Scala , Martin Oderky đã đưa ra 3 lý do để không bao gồm nghỉ hoặc tiếp tục trên slide 22:
- Họ là một chút cấp bách; sử dụng tốt hơn nhiều chức năng nhỏ hơn.
- Vấn đề làm thế nào để tương tác với đóng cửa.
- Họ không cần thiết!
Và sau đó ông nói, "Chúng tôi có thể hỗ trợ họ hoàn toàn trong các thư viện." Trên slide 23, anh ta đưa ra mã thực hiện break
. Mặc dù tôi hoàn toàn không biết Scala đủ chắc chắn, nhưng có vẻ như đoạn trích ngắn trên slide đó là tất cả những gì cần thiết để thực hiện break
và điều đó continue
có thể được thực hiện trong mã ngắn tương tự.
Có thể thực hiện những thứ như thế này trong các thư viện đơn giản hóa ngôn ngữ cốt lõi.
Trong 'Lập trình trong Scala, Ấn bản thứ hai', của Martin Oderky, Lex Spoon và Bill Venners, lời giải thích sau đây được đưa ra:
Bạn có thể nhận thấy rằng không có đề cập đến break
hoặc continue
. Scala loại bỏ các lệnh này vì chúng không kết hợp tốt với nghĩa đen của hàm ... Rõ ràng điều gì continue
có nghĩa bên trong một while
vòng lặp, nhưng ý nghĩa của nó bên trong một hàm nghĩa là gì? ... Có rất nhiều cách để chương trình không break
và continue
, và nếu bạn tận dụng lợi thế của literals chức năng, những lựa chọn thay thế thường có thể là ngắn hơn so với mã gốc.
Trở về:
Trả về có thể được coi là một chút bắt buộc trong phong cách, vì return là một động từ, một lệnh để làm một cái gì đó. Nhưng chúng cũng có thể được nhìn thấy theo cách hoàn toàn có chức năng / khai báo: chúng xác định giá trị trả về của hàm là gì (ngay cả khi, trong một hàm có nhiều trả về, chúng chỉ đưa ra một định nghĩa một phần).
Trong cùng một cuốn sách, họ nói như sau về return
:
Trong trường hợp không có bất kỳ return
câu lệnh rõ ràng nào , một phương thức Scala trả về giá trị cuối cùng được tính theo phương thức. Phong cách được đề xuất cho các phương thức trên thực tế là để tránh có các return
câu lệnh rõ ràng và đặc biệt là nhiều câu lệnh. Thay vào đó, hãy nghĩ về mỗi phương thức như một biểu thức mang lại một giá trị, được trả về.
Các phương thức kết thúc và trả về một giá trị, ngay cả khi một return
câu lệnh không được sử dụng, do đó không thể có vấn đề với các bao đóng, vì nếu không các bao đóng sẽ không có thời gian làm việc.
Cũng có thể không có vấn đề chia lưới tốt với hàm chữ, vì hàm này phải trả về một giá trị nào.
break
vàcontinue
cần một số máy móc dọn dẹp bổ sung. OTOHreturn
là một cách để chấm dứt một cách có trật tự một chức năng, và bất kỳ máy móc dọn dẹp nào cũng đã có sẵn.