Tôi sử dụng return khi xem qua một danh sách và tôi muốn thoát khỏi chức năng nếu bất kỳ thành viên nào trong danh sách đáp ứng tiêu chí. Tôi có thể thực hiện điều này chỉ với một câu lệnh như:
list.select{|k| k.meets_criteria}.length == 0
trong một số tình huống, nhưng
list.each{|k| return false if k.meets_criteria}
cũng là một dòng - với tâm trí của tôi, một số tính linh hoạt được bổ sung. Ví dụ, ví dụ đầu tiên giả định rằng đây là dòng duy nhất trong phương thức và chúng tôi muốn quay lại từ thời điểm này bất kể điều gì. Nhưng nếu đây là một thử nghiệm để xem liệu có an toàn khi tiếp tục với phần còn lại của phương pháp hay không, thì ví dụ đầu tiên sẽ cần xử lý điều đó theo một cách khác.
BIÊN TẬP:
Để thêm một số tính linh hoạt, hãy xem xét dòng mã sau:
list_of_method_names_as_symbols.each{|k| list_of_objects.each{|j| return k if j.send(k)}}
Tôi chắc chắn rằng điều này có thể được thực hiện, trong một dòng, mà không cần return
, nhưng tôi không biết làm thế nào.
Nhưng đây là một dòng mã khá linh hoạt có thể được gọi với bất kỳ danh sách các phương thức boolean và danh sách các đối tượng thực thi các phương thức đó.
BIÊN TẬP
Cần lưu ý rằng tôi đang giả sử dòng này nằm bên trong một phương thức, không phải một khối.
Nhưng đây chủ yếu là một sự lựa chọn theo phong cách, tôi nghĩ rằng trong hầu hết các tình huống, bạn có thể và có thể nên tránh sử dụng return
.